爬虫:Scrapy10 - Link Extractors

news/2024/7/19 10:18:17 标签: python, 爬虫, javascript

Link Extractors 适用于从网页(scrapy.http.Response)中抽取会被 follow 的链接的对象。

Scrapy 默认提供 2 种可用的 Link Extractor,但你可以通过实现一个简单的接口创建自己制定的 Link Extractor 来满足需求。Scrapy 提供了 from scrapy.contrib.linkextractors import LinkExtractor。

每个 LinkExtractor 有唯一的公共方法是 extract_links,其接收一个 Response 对象,并返回 scrapy.link.Link 对象。Link Extractors 只能实例化一次,其 extract_links 方法会根据不同的 Response 被调用多次来提取链接。

Link Extractors 在 CrawlSpider 类(在 Scrapy 可用)中使用。通过一套规则,你也可以用它在你的 Spider 中个,即使你不是从 CrawlSpider 继承的子类,因为它的目的很简单:提取链接。

内置 Link Extractor 参考

Scrapy 自带的 Link Extractors 类在 scrapy.contrib.linkextractors 模块提供。

默认的 link extractor 是 LinkExtractor ,其实就是 LxmlLinkExtractor:

from scrapy.contrib.linkextractors import LinkExtractor

在以前版本的 Scrapy 版本中提供了其他的 link extractor,不过都已经被废弃了。

LxmlLinkExtractor

class scrapy.contrib.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), tags=('a', 'area'), attrs=('href', ), canonicalize=True, unique=True, process_value=None)

LxmlLinkExtractor is the recommended link extractor with handy filtering options. It is implemented using lxml’s robust HTMLParser.

它接收来自扫描标签和属性提取每个值, 可以修改该值, 并返回一个新的,或返回 None 完全忽略链接的功能。如果没有给出,process_value 默认是 lambda x: x。

例如,从这段代码中提取链接:

<a href="javascript:goToPage('../other/page.html'); return false">Link text</a>

你可以使用下面的这个 process_value 函数:

def process_value(value):
    m = re.search("javascript:goToPage\('(.*?)'", value)
    if m:
        return m.group(1)

 

转载于:https://www.cnblogs.com/sufei-duoduo/p/5880936.html


http://www.niftyadmin.cn/n/1113849.html

相关文章

什么是Rogue Histogram?

Rogue Histogram可以理解为AP的“流氓直方图”&#xff0c;这里大概记录了该AP附近的其他AP的信道和频宽。 例如如下图&#xff1a;可以通过show ap auto-rf 802.11a AP-name / all 获取 拿Channel 44来举例&#xff1a; 信道44下面&#xff0c;有一个AP在20MHz&#xff0c;3个…

【Linux应用】存储技术Multi-Disk(MD)模块

1. 简介 RAID技术是利用多个块设备来模拟一个单个的块设备。Linux内核在多个块设备的基础上&#xff0c;注册了一个特殊的块设备&#xff0c;称为Multi-Disk&#xff08;MD&#xff09;设备&#xff0c;这个MD设备形成了一个逻辑层&#xff0c;支持不同级别的RAID技术。 2.分…

转用Linux的25条理由(转)

转用Linux的25条理由(转)[more]1. Linux是自由软件&#xff0c;可以不花钱。&#xff0d;&#xff0d;主要在版权法执行比较厉害的地方管用。2. 可以自己修改软件。&#xff0d;&#xff0d;据说对大机构来说&#xff0c;现在这是个很重要的考虑。3. 可以从网上得到高质量的支持…

[MySQL]使用Begin...End语句的一个坑

写一个触发器&#xff0c;执行单条语句是OK的。 想执行多条语句&#xff0c;尝试在代码中加入BEGIN END。但一加BEGIN END就报错&#xff0c; 错误信息也很诡异&#xff0c;只说某一行出错了&#xff0c;不符合Mysql的语句规范&#xff0c;提示信息就个。 查了文档&#xff0c;…

Android 字体修改,所有的细节都在这里 | 开篇

版权声明&#xff1a; 本账号发布文章均来自公众号&#xff0c;承香墨影&#xff08;cxmyDev&#xff09;&#xff0c;版权归承香墨影所有。 每周会统一更新到这里&#xff0c;如果喜欢&#xff0c;可关注公众号获取最新文章。 未经允许&#xff0c;不得转载。 序 在 Android 下…

转发-【分享】思科无线控制器HA模式升级

思科无线控制器HA模式下升级文档当前使用版本&#xff1a;8.0.120.0计划升级版本&#xff1a;8.2.151.0其他工具&#xff1a;TFTP Server: 3CDaemon远程登录&#xff1a;SecureCRT升级前准备工作&#xff1a;1. 检查当前镜像版本&#xff1a;CLI方式检查&#xff1a;show …

Linux之父表态支持DRM技术 称可提高安全性(转)

Linux之父表态支持DRM技术 称可提高安全性(转)[more]2006年02月06日 11:44 太平洋电脑网 作者&#xff1a;OZ 近日&#xff0c;自由软件基金(Free Software Foundation)正对通用公共使用许可证(GPL: general Public License)进行修订。GPL被视为自由软件运动具有宪法性的指导文…

转发-[原创]ASR1K 在Rommon导入IOS-XE启动

在相对较老的设备平台可以通过在rommon下使用以下命令导入IOS。rommon 1 > IP_ADDRESS192.168.1.2rommon 2 > IP_SUBNET_MASK255.255.255.0rommon 3 > DEFAULT_GATEWAY192.168.1.1rommon 4 > TFTP_SERVER192.168.1.3rommon 5 > TFTP_FILEc2600-is-mz.113-2.0.3.…