scrapy 抓取分页信息

练习(三)

目标抓取

  1. 在练习二的基础上按照分页信息抓取每一页信息

首先我们抓取下一页的连接

>>> response.css('.next a::attr(href)').extract_first()
'?page=2'

接下来修改parse方法

def parse(self, response):
    next_page = response.css('.next a::attr(href)').extract_first()
    if next_page is not None:
        next_page = response.urljoin(next_page)
        yield scrapy.Request(next_page, callback=self.parse)

parse方法返回request时scrapy会继续安排抓取该连接并调用相应回调函数
代码中我们使用了response.urljoin(next_page)该方法会将相对路径的URL拼接返回绝对路径的URL
scrapy.Request接受绝对路径的URL参数

便捷方式
除了上面的scrapy.Request方式外我们还可以采用response.follow的方式

def parse(self, response):
    items = response.css("div.news__item")
    for item in items:
        load = ItemLoader(item=NewsItem(),selector=item)
        load.add_css('url', "div.news__item-info h4 a::attr(href)")
        load.add_css('praise', "div.stream__item-zan span.stream__item-zan-number::text")
        load.add_css('title', "div.news__item-info h4 a::text")
        yield load.load_item()
    for a in response.css('.next a'):
        yield response.follow(a, callback=self.parse)

response.follow可以接受相对路径并且可以接受selector和string类型,如果是a标签则会自动提取href属性的连接

完整代码下载https://www.jianguoyun.com/p/Dbc6fvsQvrm_Bhjb4jI

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容