摘要:通过阅读源码,我们发现的公开方法返回的是一个中的列表,而对象有四个槽。去掉翻页只含有数字的链接去掉翻页,长度小于,且含有页字的链接页你可以在中调用这个类,来检测一下它是否达到了过滤翻页链接的目的。
在用scrapy爬取新闻网站时,我们可能只希望爬取最新的新闻。这时我们需要提供一个禁止翻页的逻辑。
而scrapy.linkextractors.LinkExctractor并没有提供这样的接口。
所以我们需要自己构建一个新的link extractor。通过阅读源码,我们发现LinkExtractor 的公开方法extract_links返回的是一个scrapy.link中的Link列表,而Link对象有四个槽:url,text, fragment, nofollow。我们在这里我们只要对url属性做一下过滤就可以了。
from scrapy.linkextractors import LinkExtractor class LinKExtractorPlus(LinkExtractor): def __init__(self, *args, **kwargs): LinkExtractor.__init__(self, *args, **kwargs) def extract_links(self, response): links = super(LinKExtractorPlus, self).extract_links(response) # 去掉翻页(只含有数字的链接) links = filter(lambda x: not (x.text.isdigit()), links) # 去掉翻页,长度小于5,且含有"页"字的链接 links = filter(lambda x: not (len(x.text) < 5 and u"页" in x.text), links) return links
你可以在scrapy shell中调用这个类,来检测一下它是否达到了过滤翻页链接的目的。
你也可以通过增加filter条件,扩展这个类。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38238.html
摘要:问题最近在用写端项目时发现个问题,的横向滑动和浏览器的横向滑动翻页效果出现了冲突。思路我们虽然不能禁止浏览器的跳转操作,但是我们可以阻止滑动元素触发的所有默认事件啊。 问题: 最近在用vue写m端项目时发现个问题,better-scroll的横向滑动和UC浏览器的横向滑动翻页效果出现了冲突。 简单的说,就是滑动scroll组件的时候也会触发UC浏览器自带的翻页效果。 为此在网上找了不少...
摘要:虽然苹果官方提供了关于的与使用说明,但这并不能满足开发者们的需求,各类复杂场景依旧让我们焦头烂额,而解决方案却不易寻找。二源码下载编译及调试之前我们首先需要获取一份苹果官方的源码。 一、前言移动互联网时代,网页依旧是内容展示的重要媒介,这离不开 WebKit 浏览内核技术的支持与发展。在 iOS 平台下开发者们...
摘要:而唯一不引发刷新的参数并不会发送到服务器,因此服务器无法获得状态。目前建议设置为空字符串。此外请注意,及本身调用时是不触发事件的。我认为,按照渐进增强的思路,这样就是最好的了,也就是只使用较少的代码优化高级浏览器的使用体验。 HTML5 history API有什么用呢? 从Ajax翻页的问题说起 请想象你正在看一个视频下面的评论,在翻到十几页的时候,你发现一个写得稍长,但非常有趣的评...
阅读 3427·2021-11-19 09:40
阅读 1313·2021-10-11 11:07
阅读 4843·2021-09-22 15:07
阅读 2889·2021-09-02 15:15
阅读 1964·2019-08-30 15:55
阅读 538·2019-08-30 15:43
阅读 882·2019-08-30 11:13
阅读 1449·2019-08-29 15:36