W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
鏈接提取器是從響應(yīng)中提取鏈接的對(duì)象。
這個(gè) ?__init__
? 方法 ?LxmlLinkExtractor
? 獲取確定可以提取哪些鏈接的設(shè)置。 ?LxmlLinkExtractor.extract_links
? 返回匹配的列表 ?Link
? 對(duì)象來(lái)自 ?Response
? 對(duì)象。
鏈接提取器用于 ?CrawlSpider
? 蜘蛛穿過(guò)一組 ?Rule
? 物體。
您也可以在普通的spider中使用鏈接提取器。例如,可以實(shí)例化 ?LinkExtractor
? 并從spider回調(diào)中使用它:
def parse(self, response):
for link in self.link_extractor.extract_links(response):
yield Request(link.url, callback=self.parse)
鏈接提取器類是 ?scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor
? . 為了方便起見(jiàn),它也可以作為 ?scrapy.linkextractors.LinkExtractor
? ::
from scrapy.linkextractors import LinkExtractor
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是推薦的帶有便捷過(guò)濾選項(xiàng)的鏈接提取程序。它是使用LXML的健壯的HTMLParser實(shí)現(xiàn)的。
allow (str or list) -- (絕對(duì))URL必須匹配才能提取的單個(gè)正則表達(dá)式(或正則表達(dá)式列表)。如果沒(méi)有給定(或?yàn)榭眨?,它將匹配所有鏈接?/p>
deny (str or list) -- 一個(gè)單獨(dú)的正則表達(dá)式(或正則表達(dá)式的列表),(絕對(duì))URL必須匹配才能被排除(即不提?。K鼉?yōu)先于 allow
參數(shù)。如果未給定(或?yàn)榭眨瑒t不會(huì)排除任何鏈接。
allow_domains (str or list) -- 包含用于提取鏈接的域的單個(gè)值或字符串列表。
deny_domains (str or list) -- 包含域的單個(gè)值或字符串列表,這些域不會(huì)被視為提取鏈接的域。
deny_extensions (list) -- 提取鏈接時(shí)應(yīng)忽略的包含擴(kuò)展名的字符串的單個(gè)值或列表。如果未給出,則默認(rèn)為 scrapy.linkextractors.IGNORED_EXTENSIONS
. .. 版本更改::2.0 IGNORED_EXTENSIONS
現(xiàn)在包括 7z
, 7zip
, apk
, bz2
, cdr
, dmg
, ico
, iso
, tar
, tar.gz
, webm
和 xz
.
restrict_xpaths (str or list) -- 是一個(gè)xpath(或xpath的列表),它定義響應(yīng)中應(yīng)該從中提取鏈接的區(qū)域。如果給定,則只掃描由這些xpath選擇的文本中的鏈接。見(jiàn)下面的例子。
restrict_css (str or list) -- 一個(gè)CSS選擇器(或選擇器列表),它定義響應(yīng)中應(yīng)該從中提取鏈接的區(qū)域。行為與 restrict_xpaths
.
restrict_text (str or list) -- 鏈接文本必須匹配才能提取的單個(gè)正則表達(dá)式(或正則表達(dá)式列表)。如果沒(méi)有給定(或?yàn)榭眨鼘⑵ヅ渌墟溄?。如果給出了一個(gè)正則表達(dá)式列表,那么如果鏈接與至少一個(gè)匹配,則將提取該鏈接。
tags (str or list) -- 提取鏈接時(shí)要考慮的標(biāo)記或標(biāo)記列表。默認(rèn)為 ('a', 'area')
.
attrs (list) -- 在查找要提取的鏈接時(shí)應(yīng)考慮的屬性或?qū)傩粤斜恚▋H適用于在 tags
參數(shù))。默認(rèn)為 ('href',)
canonicalize (bool) -- 規(guī)范化每個(gè)提取的URL(使用w3lib.url.canonicalize_url)。默認(rèn)為 False
. 請(qǐng)注意,規(guī)范化URL用于重復(fù)檢查;它可以更改服務(wù)器端可見(jiàn)的URL,因此對(duì)于使用規(guī)范化URL和原始URL的請(qǐng)求,響應(yīng)可能不同。如果您使用linkextractor跟蹤鏈接,那么保持默認(rèn)鏈接更為可靠。 canonicalize=False
.
unique (bool) -- 是否對(duì)提取的鏈接應(yīng)用重復(fù)篩選。
process_value (collections.abc.Callable) -- 一種函數(shù),接收從掃描的標(biāo)記和屬性中提取的每個(gè)值,并能修改該值并返回一個(gè)新值,或返回 None
完全忽略鏈接。如果沒(méi)有給出, process_value
默認(rèn)為 lambda x: x
. …h(huán)ighlight::html例如,要從此代碼中提取鏈接,請(qǐng)執(zhí)行以下操作::<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) -- 是否從提取的屬性中刪除空白。根據(jù)HTML5標(biāo)準(zhǔn),必須從 href
屬性 <a>
, <area>
還有許多其他元素, src
屬性 <img>
, <iframe>
元素等,因此linkextractor默認(rèn)情況下會(huì)刪除空格字符。集合 strip=False
關(guān)閉它(例如,如果從允許前導(dǎo)/尾隨空格的元素或?qū)傩灾刑崛RL)。
scrapy.link.
Link
(url, text='', fragment='', nofollow=False)Link對(duì)象表示LinkExtractor提取的鏈接。
使用下面的錨定標(biāo)記示例來(lái)說(shuō)明參數(shù):
<a rel="external nofollow" target="_blank" rel="nofollow">Dont follow this one</a>
url -- 在定位標(biāo)記中鏈接到的絕對(duì)url。從樣本來(lái)看,這是 https://example.com/nofollow.html
.
text -- 錨定標(biāo)記中的文本。從樣本來(lái)看,這是 Dont follow this one
.
fragment -- url中哈希符號(hào)后面的部分。從樣本來(lái)看,這是 foo
.
nofollow -- 中存在或不存在nofollow值的指示 rel
定位標(biāo)記的屬性。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: