Scrapy – 链接提取器
链接提取器是从响应中提取链接的对象。
这个 __init__ 方法 LxmlLinkExtractor 获取确定可以提取哪些链接的设置。 LxmlLinkExtractor.extract_links 返回匹配的列表 Link 对象来自 Response 对象。
链接提取器用于 CrawlSpider 蜘蛛穿过一组 Rule 物体。
您也可以在普通的spider中使用链接提取器。例如,可以实例化 LinkExtractor 并从spider回调中使用它:
def parse(self, response): for link in self.link_extractor.extract_links(response): yield Request(link.url, callback=self.parse)
链接提取器引用¶
链接提取器类是 scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor . 为了方便起见,它也可以作为 scrapy.linkextractors.LinkExtractor ::
from scrapy.linkextractors import LinkExtractor
LxmlLinkExtractor¶
-
class
scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags='a', 'area', attrs='href', canonicalize=False, unique=True, process_value=None, strip=True)[源代码]¶ -
LXMLlinkextractor是推荐的带有便捷过滤选项的链接提取程序。它是使用LXML的健壮的HTMLParser实现的。
- 参数
-
-
allow (str or list) -- (绝对)URL必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。
-
deny (str or list) -- 一个单独的正则表达式(或正则表达式的列表),(绝对)URL必须匹配才能被排除(即不提取)。它优先于
allow参数。如果未给定(或为空),则不会排除任何链接。 -
allow_domains (str or list) -- 包含用于提取链接的域的单个值或字符串列表。
-
deny_domains (str or list) -- 包含域的单个值或字符串列表,这些域不会被视为提取链接的域。
-
deny_extensions (list) -- 提取链接时应忽略的包含扩展名的字符串的单个值或列表。如果未给出,则默认为
scrapy.linkextractors.IGNORED_EXTENSIONS. .. 版本更改::2.0IGNORED_EXTENSIONS现在包括7z,7zip,apk,bz2,cdr,dmg,ico,iso,tar,tar.gz,webm和xz. -
restrict_xpaths (str or list) -- 是一个xpath(或xpath的列表),它定义响应中应该从中提取链接的区域。如果给定,则只扫描由这些xpath选择的文本中的链接。见下面的例子。
-
restrict_css (str or list) -- 一个CSS选择器(或选择器列表),它定义响应中应该从中提取链接的区域。行为与
restrict_xpaths. -
restrict_text (str or list) -- 链接文本必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。如果给出了一个正则表达式列表,那么如果链接与至少一个匹配,则将提取该链接。
-
tags (str or list) -- 提取链接时要考虑的标记或标记列表。默认为
('a', 'area'). -
attrs (list) -- 在查找要提取的链接时应考虑的属性或属性列表(仅适用于在
tags参数)。默认为('href',) -
canonicalize (bool) -- 规范化每个提取的URL(使用w3lib.url.canonicalize_url)。默认为
False. 请注意,规范化URL用于重复检查;它可以更改服务器端可见的URL,因此对于使用规范化URL和原始URL的请求,响应可能不同。如果您使用linkextractor跟踪链接,那么保持默认链接更为可靠。canonicalize=False. -
unique (bool) -- 是否对提取的链接应用重复筛选。
-
process_value (collections.abc.Callable) -- 一种函数,接收从扫描的标记和属性中提取的每个值,并能修改该值并返回一个新值,或返回
None完全忽略链接。如果没有给出,process_value默认为lambda x: x. …highlight::html例如,要从此代码中提取链接,请执行以下操作::<a href=“javascript:gotopage('../other/page.html');return false“>link text.<a>。highlight::python您可以在process_value::def process_value(value):m=re.search(“javascript:gotopage('(.*?)'”,value)如果m:返回m.group(1) -
strip (bool) -- 是否从提取的属性中删除空白。根据HTML5标准,必须从
href属性<a>,<area>还有许多其他元素,src属性<img>,<iframe>元素等,因此linkextractor默认情况下会删除空格字符。集合strip=False关闭它(例如,如果从允许前导/尾随空格的元素或属性中提取URL)。
-
-
extract_links(response)[源代码]¶ -
返回的列表
Link来自指定的response.仅与传递给
__init__返回链接提取器的方法。重复链接被省略。
链接¶
-
class
scrapy.link.Link(url, text='', fragment='', nofollow=False)[源代码]¶ -
Link对象表示LinkExtractor提取的链接。
使用下面的锚定标记示例来说明参数:
<a href="https://example.com/nofollow.html#foo" rel="nofollow">Dont follow this one</a>
- 参数
-
-
url -- 在定位标记中链接到的绝对url。从样本来看,这是
https://example.com/nofollow.html. -
text -- 锚定标记中的文本。从样本来看,这是
Dont follow this one. -
fragment -- url中哈希符号后面的部分。从样本来看,这是
foo. -
nofollow -- 中存在或不存在nofollow值的指示
rel定位标记的属性。
-
链接提取器引用¶
链接提取器类是 scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor . 为了方便起见,它也可以作为 scrapy.linkextractors.LinkExtractor ::
from scrapy.linkextractors import LinkExtractor
LxmlLinkExtractor¶
-
class
scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags='a', 'area', attrs='href', canonicalize=False, unique=True, process_value=None, strip=True)[源代码]¶ -
LXMLlinkextractor是推荐的带有便捷过滤选项的链接提取程序。它是使用LXML的健壮的HTMLParser实现的。
- 参数
-
-
allow (str or list) -- (绝对)URL必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。
-
deny (str or list) -- 一个单独的正则表达式(或正则表达式的列表),(绝对)URL必须匹配才能被排除(即不提取)。它优先于
allow参数。如果未给定(或为空),则不会排除任何链接。 -
allow_domains (str or list) -- 包含用于提取链接的域的单个值或字符串列表。
-
deny_domains (str or list) -- 包含域的单个值或字符串列表,这些域不会被视为提取链接的域。
-
deny_extensions (list) -- 提取链接时应忽略的包含扩展名的字符串的单个值或列表。如果未给出,则默认为
scrapy.linkextractors.IGNORED_EXTENSIONS. .. 版本更改::2.0IGNORED_EXTENSIONS现在包括7z,7zip,apk,bz2,cdr,dmg,ico,iso,tar,tar.gz,webm和xz. -
restrict_xpaths (str or list) -- 是一个xpath(或xpath的列表),它定义响应中应该从中提取链接的区域。如果给定,则只扫描由这些xpath选择的文本中的链接。见下面的例子。
-
restrict_css (str or list) -- 一个CSS选择器(或选择器列表),它定义响应中应该从中提取链接的区域。行为与
restrict_xpaths. -
restrict_text (str or list) -- 链接文本必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。如果给出了一个正则表达式列表,那么如果链接与至少一个匹配,则将提取该链接。
-
tags (str or list) -- 提取链接时要考虑的标记或标记列表。默认为
('a', 'area'). -
attrs (list) -- 在查找要提取的链接时应考虑的属性或属性列表(仅适用于在
tags参数)。默认为('href',) -
canonicalize (bool) -- 规范化每个提取的URL(使用w3lib.url.canonicalize_url)。默认为
False. 请注意,规范化URL用于重复检查;它可以更改服务器端可见的URL,因此对于使用规范化URL和原始URL的请求,响应可能不同。如果您使用linkextractor跟踪链接,那么保持默认链接更为可靠。canonicalize=False. -
unique (bool) -- 是否对提取的链接应用重复筛选。
-
process_value (collections.abc.Callable) -- 一种函数,接收从扫描的标记和属性中提取的每个值,并能修改该值并返回一个新值,或返回
None完全忽略链接。如果没有给出,process_value默认为lambda x: x. …highlight::html例如,要从此代码中提取链接,请执行以下操作::<a href=“javascript:gotopage('../other/page.html');return false“>link text.<a>。highlight::python您可以在process_value::def process_value(value):m=re.search(“javascript:gotopage('(.*?)'”,value)如果m:返回m.group(1) -
strip (bool) -- 是否从提取的属性中删除空白。根据HTML5标准,必须从
href属性<a>,<area>还有许多其他元素,src属性<img>,<iframe>元素等,因此linkextractor默认情况下会删除空格字符。集合strip=False关闭它(例如,如果从允许前导/尾随空格的元素或属性中提取URL)。
-
-
extract_links(response)[源代码]¶ -
返回的列表
Link来自指定的response.仅与传递给
__init__返回链接提取器的方法。重复链接被省略。
链接¶
-
class
scrapy.link.Link(url, text='', fragment='', nofollow=False)[源代码]¶ -
Link对象表示LinkExtractor提取的链接。
使用下面的锚定标记示例来说明参数:
<a href="https://example.com/nofollow.html#foo" rel="nofollow">Dont follow this one</a>
- 参数
-
-
url -- 在定位标记中链接到的绝对url。从样本来看,这是
https://example.com/nofollow.html. -
text -- 锚定标记中的文本。从样本来看,这是
Dont follow this one. -
fragment -- url中哈希符号后面的部分。从样本来看,这是
foo. -
nofollow -- 中存在或不存在nofollow值的指示
rel定位标记的属性。
-
LxmlLinkExtractor¶
-
class
scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags='a', 'area', attrs='href', canonicalize=False, unique=True, process_value=None, strip=True)[源代码]¶ -
LXMLlinkextractor是推荐的带有便捷过滤选项的链接提取程序。它是使用LXML的健壮的HTMLParser实现的。
- 参数
-
-
allow (str or list) -- (绝对)URL必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。
-
deny (str or list) -- 一个单独的正则表达式(或正则表达式的列表),(绝对)URL必须匹配才能被排除(即不提取)。它优先于
allow参数。如果未给定(或为空),则不会排除任何链接。 -
allow_domains (str or list) -- 包含用于提取链接的域的单个值或字符串列表。
-
deny_domains (str or list) -- 包含域的单个值或字符串列表,这些域不会被视为提取链接的域。
-
deny_extensions (list) -- 提取链接时应忽略的包含扩展名的字符串的单个值或列表。如果未给出,则默认为
scrapy.linkextractors.IGNORED_EXTENSIONS. .. 版本更改::2.0IGNORED_EXTENSIONS现在包括7z,7zip,apk,bz2,cdr,dmg,ico,iso,tar,tar.gz,webm和xz. -
restrict_xpaths (str or list) -- 是一个xpath(或xpath的列表),它定义响应中应该从中提取链接的区域。如果给定,则只扫描由这些xpath选择的文本中的链接。见下面的例子。
-
restrict_css (str or list) -- 一个CSS选择器(或选择器列表),它定义响应中应该从中提取链接的区域。行为与
restrict_xpaths. -
restrict_text (str or list) -- 链接文本必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。如果给出了一个正则表达式列表,那么如果链接与至少一个匹配,则将提取该链接。
-
tags (str or list) -- 提取链接时要考虑的标记或标记列表。默认为
('a', 'area'). -
attrs (list) -- 在查找要提取的链接时应考虑的属性或属性列表(仅适用于在
tags参数)。默认为('href',) -
canonicalize (bool) -- 规范化每个提取的URL(使用w3lib.url.canonicalize_url)。默认为
False. 请注意,规范化URL用于重复检查;它可以更改服务器端可见的URL,因此对于使用规范化URL和原始URL的请求,响应可能不同。如果您使用linkextractor跟踪链接,那么保持默认链接更为可靠。canonicalize=False. -
unique (bool) -- 是否对提取的链接应用重复筛选。
-
process_value (collections.abc.Callable) -- 一种函数,接收从扫描的标记和属性中提取的每个值,并能修改该值并返回一个新值,或返回
None完全忽略链接。如果没有给出,process_value默认为lambda x: x. …highlight::html例如,要从此代码中提取链接,请执行以下操作::<a href=“javascript:gotopage('../other/page.html');return false“>link text.<a>。highlight::python您可以在process_value::def process_value(value):m=re.search(“javascript:gotopage('(.*?)'”,value)如果m:返回m.group(1) -
strip (bool) -- 是否从提取的属性中删除空白。根据HTML5标准,必须从
href属性<a>,<area>还有许多其他元素,src属性<img>,<iframe>元素等,因此linkextractor默认情况下会删除空格字符。集合strip=False关闭它(例如,如果从允许前导/尾随空格的元素或属性中提取URL)。
-
-
extract_links(response)[源代码]¶ -
返回的列表
Link来自指定的response.仅与传递给
__init__返回链接提取器的方法。重复链接被省略。
链接¶
-
class
scrapy.link.Link(url, text='', fragment='', nofollow=False)[源代码]¶ -
Link对象表示LinkExtractor提取的链接。
使用下面的锚定标记示例来说明参数:
<a href="https://example.com/nofollow.html#foo" rel="nofollow">Dont follow this one</a>
- 参数
-
-
url -- 在定位标记中链接到的绝对url。从样本来看,这是
https://example.com/nofollow.html. -
text -- 锚定标记中的文本。从样本来看,这是
Dont follow this one. -
fragment -- url中哈希符号后面的部分。从样本来看,这是
foo. -
nofollow -- 中存在或不存在nofollow值的指示
rel定位标记的属性。
-