scrapy 抓取分页信息

作者: 直尺 | 来源:发表于2017-08-18 17:43 被阅读40次

练习(三)

目标抓取

  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

相关文章

网友评论

    本文标题:scrapy 抓取分页信息

    本文链接:https://www.haomeiwen.com/subject/rhgarxtx.html