今天在編寫Scrapy爬蟲的時候接觸到了LinkExtractor,遂學習了一下這個鏈接提取器。
Link Extractors 是那些目的僅僅是從網頁(scrapy.http.Response
對象)中抽取最終將會被follow鏈接的對象。使用場景就是在一個網站中通過自定義規則提取到自己想要的那些網址。
Scrapy默認提供2種可用的 Link Extractor, 但你通過實現一個簡單的接口創建自己定制的Link Extractor來滿足需求。默認的LinkExtractor(也就是LxmlLinkExtractor)擁有比較方便的過濾選項,使用LXML的強大的HTMLParser實現。
使用的時候先從scrapy.linkextractors模塊中引入:
from scrapy.linkextractors import LinkExtractor
LxmlLinkExtractor的使用:
class 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)
相關參數的含義請參考文檔:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/link-extractors.html
主要參數:
allow: #滿足括號中正則表達式的值會被提取,如果為空則全部匹配 allow_domains: #會被提取的鏈接的域名
與之相關的CrawlSpider以及Rule之后應該會一起整合寫一個博客。