scrapy爬取豆瓣读书top250
时间: 2023-04-28 15:05:44 浏览: 194
好的,以下是使用Scrapy爬取豆瓣读书Top250的步骤:
1. 首先,需要创建一个Scrapy项目。可以使用命令行工具,在终端中输入以下命令:
scrapy startproject douban_book
这将创建一个名为“douban_book”的Scrapy项目。
2. 接下来,需要创建一个Spider。在Scrapy中,Spider是用于定义如何爬取网站的类。可以使用命令行工具,在终端中输入以下命令:
scrapy genspider douban_book_spider book.douban.com
这将创建一个名为“douban_book_spider”的Spider,用于爬取豆瓣读书的网站。
3. 在Spider中,需要定义如何爬取网站。可以使用XPath或CSS选择器来定位需要的数据。以下是一个示例:
def parse(self, response):
books = response.xpath('//div[@class="article"]//table')
for book in books:
title = book.xpath('.//div[@class="pl2"]/a/text()').extract_first()
author = book.xpath('.//p[@class="pl"]/text()').extract_first()
rating = book.xpath('.//span[@class="rating_nums"]/text()').extract_first()
yield {
'title': title,
'author': author,
'rating': rating
}
这个示例中,使用XPath选择器定位了书名、作者和评分,并将它们存储在一个字典中,最后使用yield语句将字典返回。
4. 最后,需要在Spider中定义如何跟踪链接。可以使用Scrapy的LinkExtractor类来提取链接,并使用回调函数来处理提取的链接。以下是一个示例:
from scrapy.linkextractors import LinkExtractor
def parse(self, response):
books = response.xpath('//div[@class="article"]//table')
for book in books:
title = book.xpath('.//div[@class="pl2"]/a/text()').extract_first()
author = book.xpath('.//p[@class="pl"]/text()').extract_first()
rating = book.xpath('.//span[@class="rating_nums"]/text()').extract_first()
yield {
'title': title,
'author': author,
'rating': rating
}
le = LinkExtractor(restrict_xpaths='//div[@class="paginator"]//a[@class="next"]')
for link in le.extract_links(response):
yield scrapy.Request(link.url, callback=self.parse)
这个示例中,使用LinkExtractor类提取下一页的链接,并使用回调函数self.parse来处理提取的链接。
以上就是使用Scrapy爬取豆瓣读书Top250的步骤。希望对你有所帮助!
阅读全文