Scrapy爬蟲入門教程十二 Link Extractors(連結提取器)

NO IMAGE

 

Scrapy爬蟲入門教程一 安裝和基本使用 

Scrapy爬蟲入門教程二 官方提供Demo 

Scrapy爬蟲入門教程三 命令列工具介紹和示例 

Scrapy爬蟲入門教程四 Spider(爬蟲) 

Scrapy爬蟲入門教程五 Selectors(選擇器) 

Scrapy爬蟲入門教程六 Items(專案) 

Scrapy爬蟲入門教程七 Item Loaders(專案載入器) 

Scrapy爬蟲入門教程八 互動式 shell 方便除錯 

Scrapy爬蟲入門教程九 Item Pipeline(專案管道) 

Scrapy爬蟲入門教程十 Feed exports(匯出檔案) 

Scrapy爬蟲入門教程十一 Request和Response(請求和響應) 

Scrapy爬蟲入門教程十二 Link Extractors(連結提取器)

Scrapy爬蟲入門教程十三 Settings(設定)

 

 

目錄

連結提取器

內建連結提取器參考

LxmlLinkExtractor


 

開發環境: 
Python 3.6.0 版本 (當前最新) 
Scrapy 1.3.2 版本 (當前最新)

連結提取器

連結提取器是其唯一目的是從scrapy.http.Response最終將跟隨的網頁(物件)提取連結的物件。

有Scrapy,但你可以建立自己的自定義連結提取器,以滿足您的需求通​​過實現一個簡單的介面。scrapy.linkextractors import LinkExtractor

每個連結提取器唯一的公共方法是extract_links接收一個Response物件並返回一個scrapy.link.Link物件列表。連結提取器意在被例項化一次,並且它們的extract_links方法被呼叫幾次,具有不同的響應以提取跟隨的連結。

連結提取程式CrawlSpider 通過一組規則在類中使用(可以在Scrapy中使用),但是您也可以在爬蟲中使用它,即使不從其中CrawlSpider提取子類 ,因為其目的非常簡單:提取連結。

內建連結提取器參考

scrapy.linkextractors模組中提供了與Scrapy捆綁在一起的連結提取器類 。

預設的連結提取器是LinkExtractor,它是相同的 LxmlLinkExtractor

from scrapy.linkextractors import LinkExtractor

 

以前的Scrapy版本中曾經有過其他連結提取器類,但現在已經過時了。

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=True, unique=True, process_value=None)

 

LxmlLinkExtractor是推薦的連結提取器與方便的過濾選項。它使用lxml的強大的HTMLParser實現。

引數:

  • allow(正規表示式(或的列表)) – 一個單一的正規表示式(或正規表示式列表),(絕對)urls必須匹配才能提取。如果沒有給出(或為空),它將匹配所有連結。
  • deny(正規表示式或正規表示式列表) – 一個正規表示式(或正規表示式列表),(絕對)urls必須匹配才能排除(即不提取)。它優先於allow引數。如果沒有給出(或為空),它不會排除任何連結。
  • allow_domains(str或list) – 單個值或包含將被考慮用於提取連結的域的字串列表
  • deny_domains(str或list) – 單個值或包含不會被考慮用於提取連結的域的字串列表
  • deny_extensions(list) – 包含在提取連結時應該忽略的擴充套件的單個值或字串列表。如果沒有給出,它將預設為IGNORED_EXTENSIONS在scrapy.linkextractors包中定義的 列表 。
  • restrict_xpaths(str或list) – 是一個XPath(或XPath的列表),它定義響應中應從中提取連結的區域。如果給出,只有那些XPath選擇的文字將被掃描連結。參見下面的例子。
  • restrict_css(str或list) – 一個CSS選擇器(或選擇器列表),用於定義響應中應提取連結的區域。有相同的行為restrict_xpaths。 
    標籤(str或list) – 標籤或在提取連結時要考慮的標籤列表。預設為。(‘a’, ‘area’)
  • attrs(list) – 在查詢要提取的連結時應該考慮的屬性或屬性列表(僅適用於引數中指定的那些標籤tags )。預設為(‘href’,)
  • canonicalize(boolean) – 規範化每個提取的url(使用w3lib.url.canonicalize_url)。預設為True。
  • unique(boolean) – 是否應對提取的連結應用重複過濾。
  • process_value(callable) – 
    接收從標籤提取的每個值和掃描的屬性並且可以修改值並返回新值的函式,或者返回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://blog.csdn.net/Inke88/article/details/61204579