发布于 2015-09-04 06:47:48 | 648 次阅读 | 评论: 0 | 来源: 网络整理
Link Extractors 是那些目的仅仅是从网页(scrapy.http.Response 对象)中抽取最终将会被follow链接的对象。
Scrapy默认提供2种可用的 Link Extractor, 但你通过实现一个简单的接口创建自己定制的Link Extractor来满足需求。
每个LinkExtractor有唯一的公共方法是 extract_links ,它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象。Link Extractors,要实例化一次并且 extract_links 方法会根据不同的response调用多次提取链接。
Link Extractors在 CrawlSpider 类(在Scrapy可用)中使用, 通过一套规则,但你也可以用它在你的Spider中,即使你不是从 CrawlSpider 继承的子类, 因为它的目的很简单: 提取链接。
所有与Scrapy绑定且可用的Link Extractors类在 scrapy.contrib.linkextractors 模块提供。
如果您不知道选择哪个link extractor,使用默认的即可(其实就是LxmlLinkExtractor(参照下面)):
from scrapy.contrib.linkextractors import LinkExtractor
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.
| 参数: |
|
|---|
警告
SGMLParser based link extractors are unmantained and its usage is discouraged.
It is recommended to migrate to LxmlLinkExtractor if you are still
using SgmlLinkExtractor.
scrapy.contrib.linkextractors.sgml.SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)¶SgmlLinkExtractor继承于 BaseSgmlLinkExtractor,其提供了过滤器(filter),以便于提取包括符合正则表达式的链接。
过滤器通过以下构造函数的参数配置:
| 参数: |
|
|---|
scrapy.contrib.linkextractors.sgml.BaseSgmlLinkExtractor(tag="a", attr="href", unique=False, process_value=None)¶这个Link Extractor的目的只是充当了Sgml Link Extractor的基类。你应该使用 SgmlLinkExtractor。
该构造函数的参数是:
| 参数: |
|
|---|