返回介绍

第6章使用 LinkExtractor 提取链接

发布于 2024-02-05 21:13:20 字数 1018 浏览 0 评论 0 收藏 0

在爬取一个网站时,想要爬取的数据通常分布在多个页面中,每个页面包含一部分数据以及到其他页面的链接,提取页面中数据的方法大家已经掌握,提取链接有使用Selector和使用LinkExtractor两种方法。

本章来学习如何提取页面中的链接。

1.使用Selector

因为链接也是页面中的数据,所以可以使用与提取数据相同的方法进行提取,在提取少量(几个)链接或提取规则比较简单时,使用Selector就足够了。

2.使用LinkExtractor

Scrapy提供了一个专门用于提取链接的类LinkExtractor,在提取大量链接或提取规则比较复杂时,使用LinkExtractor更加方便。

在第1章的example项目中使用了第一种方法提取下一页链接,回顾其中的代码片段:

class BooksSpider(scrapy.Spider):
 ...
def parse(self, response):
 ...
 # 提取链接
 # 下一页的url 在ul.pager > li.next > a 里面
 # 例如: <li class="next"><a href="catalogue/page-2.html">next</a></li>
 next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
 if next_url:
  # 如果找到下一页的url,得到绝对路径,构造新的Request 对象
  next_url = response.urljoin(next_url)
  yield scrapy.Request(next_url, callback=self.parse)
...

上述代码中,先使用CSS选择器选中包含下一页链接的a元素并获取其href属性,然后调用response.urljoin方法计算出绝对url地址,最后构造Request对象并提交。

第一种方法大家早已掌握,本章我们来学习如何使用LinkExtractor提取链接。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文