发布于 2015-09-04 06:47:48 | 611 次阅读 | 评论: 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
。
该构造函数的参数是:
参数: |
|
---|