2016年9月21日09:21:431.爬蟲的抓取周期:(1)首先生成初始請求爬第一個url,並指定一個回調函數被稱為與下載這些請求的響應。(2)第一個請求執行通過調用 start_requests()方法(預設情況下)生成 Request中指定的url start_urls和 parse方法作為請 ...
2016年9月21日09:21:43
1.爬蟲的抓取周期:
(1)首先生成初始請求爬第一個url,並指定一個回調函數被稱為與下載這些請求的響應。
(2)第一個請求執行通過調用 start_requests()方法(預設情況下)生成 Request中指定
的url start_urls和 parse方法作為請求的回調函數。
(3)在回調函數中,解析響應(網頁),並返回與提取的數據字典, Item對象, Request這
些對象的對象,或一個iterable。這些請求還將包含一個回調(也許相同),將由Scrapy然後
下載他們的反應由指定的回調。
(4)在回調函數中,您解析頁面內容,通常使用 選擇器(但您還可以使用BeautifulSoup,
lxml或其他機制你喜歡)與解析數據並生成項目。
(5)最後,返回的物品爬蟲通常會保存到資料庫(在一些 項目管道)或寫入一個文件使用
Feed exports.
2.爬蟲屬性值設定
Spider:
(1)name 爬蟲名字
(2)allowed_domains 爬蟲允許的功能變數名稱
(3)start_urls 網址的列表
(4)custom_settings 爬蟲的設置(包括了下載中間件、兩次下載間隙、下載超時、下載最大值
日誌開啟、日誌文件位置、日誌等級(預設debug)、
標準輸出是否存入日誌、存儲debug、隨機下載延遲、用戶代理(流浪器))
(5)crawler 綁定當前爬蟲的Crawler對象
(6)settings Settings類的一個實例,包含成員函數(from_crawler(crawler,*args,**kwargs)創建爬蟲、
start_request():無指定URL時調用、
make_requests_from_url(url)為url生成start_url、
parse(response)處理爬蟲得到的數據、
log(message[level,component])、
closed(原因))
CrawlSpider:通用型爬蟲,繼承Spider
(1)rules rule的列表,定義爬蟲特定行為
rule: scrapy.spiders.Rule(link_extractor(鏈接提取器),callback=None(是否回調),
cb_kwargs=None(傳遞給回調函數的參數(keyword argument)的字典),
follow=None(指定了根據該規則從response提取的鏈接是否需要跟進),
process_links=None(過濾鏈接),
process_request=None(提取到每個request時都會調用該函數,過濾request))
XMLFeedSpider:通過迭代各個節點分析XML源
(1)iterator:用於確定使用哪個迭代器的字元串屬性
iternodes:推薦,基於正則表達式的快速迭代器
xml 使用 Selector 的迭代器,使用DOM存取,數據量大時會出現問題
html 使用 Selector 的迭代器,使用DOM存取,數據量大時會出現問題
(2)itertag 迭代起點字元串
(3)namespace 一個由(prefix,url)元組所組成的list,定義改文檔中會被Spider處理的可用的namespace,
prefix 及 uri 會被自動調用 register_namespace() 生成namespace
(4)adapt_response(response) 接受一個response並返回一個response(可以相同也可以不同)
(5)parse_node(response,selector) 節點符合提供的標簽名時(itertag)該方法被調用,
返回一個 Item 對象或者 Request 對象 或者一個包含二者的可迭代對象(iterable)
(6)process_results(response,results) spider返回結果(item或request)時該方法被調用,返回一個結果的列表
CSVFeedSpider:類似於XMLFeedSpider的爬蟲,除了遍歷模式為按其行遍歷,每次迭代是使用parse_row()
(1)delimiter csv文件中用於區分欄位的分隔符,預設‘,’
(2)headers csv文件中包含用來提取欄位的行的列表
(3)parse_row(response,row) 可以覆蓋 adapt_response 及 process_results 方法來進行預處理(pre-processing)
及後(post-processing)處理
SitemapSpider:通過SiteMaps(網站地圖)來發現爬取的URL,能從robotos.txt中獲取sitemap的url
(1)sitemap_urls 爬取的url的sitemap的url列表(list)。 您也可以指定為一個 robots.txt ,
spider會從中分析並提取url
(2)sitemap_rules 一個包含 (regex, callback) 元組的列表(list)
regex 匹配網站地圖提供的URL的正則表達式
callback 指定了匹配正則表達式的url的處理函數
(3)sitemap_follow 匹配要跟進的sitemap的正則表達式的列表
(4)sitemap_alternate_links url有可選連接時,是否跟進,預設關閉