low-level~python|low-level~python scrapy多级页面爬取并存储为JSON格式

在上一篇scrapy(low-level~python scrapy自动爬取网页的爬虫)[https://www.jianshu.com/p/9b07e556216e]中我们实现了翻页操作,但是这种操作不利于改动。这次改进为分模块编程的思想。
思路:
第一步:提取每页的链接
第二步:提取每页商品的链接
第三步:提取每页商品的具体信息
这里的难点在于

for i in range(1,3): url ="http://category.dangdang.com/pg"+str(i)+"-cp01.05.16.00.00.00.html #通过yield返回Reques,并指定要爬取的网址和回调函数 yield Request(url,callback=self.parse)

Request函数的参数callback,这个参数决定着接下来执行什么操作。
首先我们知道spider中初始的request是通过调用start_requests()来获取,start_requests()读取start_urls中的URL,所以我们每页链接的提取放在start_requests()中处理
def start_requests(self): start_urls = ['http://category.dangdang.com/pg1-cp01.05.16.00.00.00.html',] start,end=1,3 for i in range(start,end): print(str(i)) url="http://category.dangdang.com/pg"+str(i)+"-cp01.05.16.00.00.00.html" print(url) yield scrapy.http.Request(url,self.parse)

yield scrapy.http.Request(url,self.parse)含义:
Request请求url链接,回调parse()函数

接下来我们定义函数parse(),这个函数负责提取每个页面商品的链接。分析页面代码

low-level~python|low-level~python scrapy多级页面爬取并存储为JSON格式
文章图片
image.png 如图所示,所有的商品信息都在
  • *
  • 标签下,而这些li标签在