京东图书scrapy爬取源代码
时间: 2023-11-10 19:06:37 浏览: 32
以下是一个简单的 Scrapy 爬取京东图书的示例代码,供您参考:
```python
# -*- coding: utf-8 -*-
import scrapy
class JdbooksSpider(scrapy.Spider):
name = 'jdbooks'
allowed_domains = ['book.jd.com']
start_urls = ['https://book.jd.com/booksort.html']
def parse(self, response):
# 获取所有分类的链接
links = response.css('.mc .item > dt > a::attr(href)').extract()
for link in links:
yield scrapy.Request(link, callback=self.parse_category)
def parse_category(self, response):
# 获取当前分类下的所有图书链接
links = response.css('.gl-item .p-name a::attr(href)').extract()
for link in links:
yield scrapy.Request(link, callback=self.parse_book)
def parse_book(self, response):
# 获取图书信息
book = {}
book['title'] = response.css('.sku-name::text').extract_first().strip()
book['author'] = response.css('.p-author a::text').extract_first()
book['price'] = response.css('.p-price .price::text').extract_first()
book['press'] = response.css('.p-parameter .clearfix li:first-child::text').extract_first().strip()
book['publish_date'] = response.css('.p-parameter .clearfix li:nth-child(2)::text').extract_first().strip()
yield book
```
在上述代码中,首先定义了一个名为 `JdbooksSpider` 的 Spider,用于爬取京东图书的数据。在 `parse` 方法中,首先获取所有分类的链接,然后依次请求每个分类的页面,并将响应交给 `parse_category` 方法处理。在 `parse_category` 方法中,获取当前分类下的所有图书链接,然后依次请求每个图书的页面,并将响应交给 `parse_book` 方法处理。在 `parse_book` 方法中,获取图书的信息,并将其保存到一个字典对象中,最后使用 `yield` 返回该字典对象,Scrapy 会将其保存到本地文件中。
使用该示例代码,您可以爬取京东图书的基本信息,例如图书标题、作者、价格、出版社和出版日期等。如果您需要爬取更多的信息,例如图书的评价、评论和销售排行等,可以根据实际需要进行修改。