Scrapy系列四:多页数据爬取

您所在的位置:网站首页 爬虫多页爬取 Scrapy系列四:多页数据爬取

Scrapy系列四:多页数据爬取

2023-11-06 23:36| 来源: 网络整理| 查看: 265

本文基于系列二代码的基础上修改,

思路:在解析函数qidian_parse中,提取完本页数据并提交给引擎后,提取到下一页的URL地址,使用这个URL地址生成一个新的Request对象,再提交给引擎,引擎重新执行解析函数,如此递进,直到最后一页

主要步骤如下

1.定义一个保存当前页数的变量

 

2.使用递归实现自动翻页

 

完整代码 from scrapy import Request from scrapy.spiders import Spider class HotSalesSpider(Spider): # 爬虫名称 name = "hot" #当前页数 current_page = 1 #设置用户代理为浏览器类型 qidian_headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36"} def start_requests(self): url = "https://www.qidian.com/rank/hotsales?style=1&page=1" yield Request(url, headers=self.qidian_headers, callback=self.qidian_parse) #数据解析,此时response对象已经有网页的html数据 def qidian_parse(self, response): #使用xpath定位到小说内容的div元素 list_selector = response.xpath("//div[@class='book-mid-info']") #读取每部小说的元素 for one_selector in list_selector: #获取小说名称 name = one_selector.xpath("h4/a/text()").extract()[0] #获取作者,第一个p标签的第一个a标签的内容 author = one_selector.xpath("p[1]/a[1]/text()").extract()[0] #获取类型 type = one_selector.xpath("p[1]/a[2]/text()").extract()[0] #获取形式 form = one_selector.xpath("p[1]/span/text()").extract()[0] #把爬取的数据保存到字典 hot_dict = { "name" : name, "author" : author, "type" : type, "form" : form } yield hot_dict #多页数据爬取,原理:执行完一次爬取,当前页数加1,然后通过回调函数重新执行qidian_parse方法 self.current_page+=1 if(self.current_page


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3