美文网首页
scrapy 下一页链接请求

scrapy 下一页链接请求

作者: 戒灵 | 来源:发表于2018-09-26 10:46 被阅读0次

```

import scrapy

class QuotesSpider(scrapy.Spider):

    name = "quotes"

    start_urls = [

        'http://quotes.toscrape.com/page/1/',

    ]

    def parse(self, response):

        for quote in response.css('div.quote'):

            yield {

                'text': quote.css('span.text::text').extract_first(),

                'author': quote.css('small.author::text').extract_first(),

                'tags': quote.css('div.tags a.tag::text').extract(),

            }

        next_page = response.css('li.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()方法查找到下一页的链接,使用urljoin()方法构建完整的绝对URL(因为链接可以是相对的),并产生一个新的请求到下一个页面,将自己作为回调函数来处理下一页的数据提取,并保持遍历所有页面的抓取。

在这里您将看到Scrapy的跟随链接机制:当您在回调方法中产生请求时,Scrapy会安排发送请求并注册一个回调方法,以便在请求结束时执行。

使用这种方法,您可以根据您定义的规则构建复杂的抓取工具,并根据所访问的页面提取不同类型的数据。

在我们的例子中,它创建了一个循环,找下一页的所有链接,直到它找不到。这种做法对于抓取分页的博客,论坛和其他网站的链接是很方便的。

---------------------本文来自 pythonisnotshell 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/pythonisnotshell/article/details/80538401?utm_source=copy

相关文章

网友评论

      本文标题:scrapy 下一页链接请求

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