手把手教你利用 Scrapy 编写一个完整的爬虫
以下是一个简单的Scrapy爬虫示例,用于抓取一个示例网站上的书籍信息。
首先,创建一个新的Scrapy项目:
scrapy startproject bookscrawler
然后,进入项目目录,创建一个爬虫:
cd bookscrawler
scrapy genspider books examplebooks.com
接下来,编辑爬虫文件 bookscrawler/spiders/books.py
来提取书籍信息:
import scrapy
class BooksSpider(scrapy.Spider):
name = 'books'
allowed_domains = ['examplebooks.com']
start_urls = ['http://examplebooks.com/books']
def parse(self, response):
for book in response.css('div.book_description'):
yield {
'title': book.css('h2::text').extract_first(),
'author': book.css('p.author::text').extract_first(),
'price': book.css('p.price::text').extract_first(),
}
next_page_url = response.css('a.next::attr(href)').extract_first
if next_page_url:
yield response.follow(next_page_url, self.parse)
最后,设置管道以保存数据(可选,取决于需求):
class BookscrawlerPipeline:
def __init__(self):
self.file = open('books.csv', 'w')
self.file.write('title,author,price\n')
def process_item(self, item, spider):
line = f"{item['title']},{item['author']},{item['price']}\n"
self.file.write(line)
return item
def close_spider(self, spider):
self.file.close()
在项目的 settings.py
文件中启用管道:
ITEM_PIPELINES = {
'bookscrawler.pipelines.BookscrawlerPipeline': 300,
}
现在,运行爬虫:
scrapy crawl books
这个爬虫会抓取 examplebooks.com
上的书籍信息,并将它们保存到 books.csv
文件中。这只是一个简单的例子,实际应用中您需要根据目标网站的结构调整CSS选择器和提取的字段。
评论已关闭