文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第6章使用 LinkExtractor 提取链接
在爬取一个网站时,想要爬取的数据通常分布在多个页面中,每个页面包含一部分数据以及到其他页面的链接,提取页面中数据的方法大家已经掌握,提取链接有使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论