栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python > python爬虫

python爬虫使用scrapy框架处理多页数据的方法

python爬虫 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫使用scrapy框架处理多页数据的方法

python爬虫爬取网络页面时,常常遇到需要的网络页面不仅仅一页,需要爬取多个页面,这时我们可以使用python 爬虫的scrapy框架,scrapy框架提供了处理多页数据的两种方法:1、将每一页对应的url存放到爬虫文件的start_urls;2、使用Request方法手动发起请求(推荐使用)。

方法一:将每一页对应的url存放到爬虫文件的start_urls

问题:如果页数较多时,列表就会变得很大。

方法二:使用Request方法手动发起请求(推荐使用)

案例:爬取古诗文网每一页的古诗的标题

1、爬取所有页码数据

import scrapy

class GushiSpider(scrapy.Spider):
    name = 'gushi'
    start_urls = ['https://www.gushiwen.org/']

    pageNum = 2 #pageNum为2,第一页已经爬取过了 
    url = 'https://www.gushiwen.cn/default_%d.aspx' #每页的url是类似的
    
    def parse(self, response):
        div_list = response.xpath('//div[@class="sons"]/div[1]/p[1]')
        print(str(len(div_list))+"首古诗")
        for div in div_list:
            title = div.xpath('./a/b/text()').extract()
            print(title)
        print("------------------------")

        # 爬取所有页码数据    
        if self.pageNum <= 10: #一共爬取10页(共10页)
            self.pageNum += 1
            url = format(self.url % self.pageNum)   # 每一页的url和pageNum有关

2、使用Request方法向页面手动发起请求

         # 手动发起请求: scrapy.Request(url,callback,meta)
            ## url是需要发起请求的url,
            ## callback参数的值是回调函数,即发起请求后需要调用哪一个方法
            ## meta参数的值是一个 字典,表示的是向回调函数传递什么样的参数

3、向上面格式化的url发起请求,callback递归调用parse()方法,将得到的数据继续进行解析

 yield scrapy.Request(url=url,callback=self.parse)

以上就是python爬虫scrapy框架提供了处理多页数据的两种方法,推荐使用Request方法手动发起请求哟~更多python爬虫学习推荐:python爬取入门教程。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/12504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号