關(guān)于爬蟲中scrapy.Request的更多參數(shù)用法
爬蟲中scrapy.Request的更多參數(shù)
scrapy.Request的參數(shù)
scrapy.Request(url[,callback,method="GET",headers,body,cookies,meta,dont_filter=Fallse])
參數(shù)解釋:
中括號中的參數(shù)為可選參數(shù),可寫可不寫
callback
:表示當前的url響應交給哪個函數(shù)去處理(默認為parse函數(shù))meta
:實現(xiàn)數(shù)據(jù)在不同解析函數(shù)中傳遞,meta默認帶有部分數(shù)據(jù),比如下載延遲、請求深度等(用于解析方法之間的數(shù)據(jù)傳遞,常用在一條數(shù)據(jù)分散在多個不同結(jié)構(gòu)的頁面中的情況)dont_filter
:默認為False,會過濾請求的url地址,即請求過的url地址不會繼續(xù)被請求,對需要重復請求的url地址可以把它設置為True,start_urls中的地址會被反復請求,否則程序不會啟動headers
:接收一個字典,其中不包括cookiescookies
:接收一個字典,專門放置cookiesmethod
:指定POST或GET請求body
:接收json字符串,為post的數(shù)據(jù)發(fā)送payload_post請求
meta參數(shù)
meta的作用:meta可以實現(xiàn)數(shù)據(jù)在不同的解析函數(shù)中的傳遞
在爬蟲文件的parse方法中,增加一個函數(shù)parse_detail函數(shù)(用來解析另一個頁面):
def parse(self,response): ? ? ... ? ? yield scrapy.Request(detail_url, callback=self.parse_detail,meta={"item":item}) ... def parse_detail(self,response): ? ? #獲取之前傳入的item ? ? item = resposne.meta["item"]
就相當于,把parse中解析的數(shù)據(jù)存到了meta字典中,對應的key為item;而在另一個函數(shù)(parse_detail)中,通過meta字典中的key:item來提取parse中的數(shù)據(jù),從而實現(xiàn)不同頁面數(shù)據(jù)的拼接
注意:
- meta參數(shù)是一個字典
- meta字典中有一個固定的鍵proxy,表示代理ip
scrapy中Request中常用參數(shù)
url
: 就是需要請求,并進行下一步處理的urlcallback
: 指定該請求返回的Response,由那個函數(shù)來處理。method
: 一般不需要指定,使用默認GET方法請求即可headers
: 請求時,包含的頭文件。一般不需要。內(nèi)容一般如下:使用 urllib2 自己寫過爬蟲的肯定知道
Host: media.readthedocs.org User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: text/css,*/*;q=0.1 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://scrapy-chs.readthedocs.org/zh_CN/0.24/ Cookie: _ga=GA1.2.1612165614.1415584110; Connection: keep-alive If-Modified-Since: Mon, 25 Aug 2014 21:59:35 GMT Cache-Control: max-age=0
meta
: 比較常用,在不同的請求之間傳遞數(shù)據(jù)使用的。字典dict型
request_with_cookies = Request(url="http://www.example.com", ? ? ? ?cookies={'currency': 'USD', 'country': 'UY'}, ? ? ? ?meta={'dont_merge_cookies': True})
encoding
: 使用默認的 'utf-8' 就行。
dont_filter: indicates that this request should not be filtered by the scheduler.
This is used when you want to perform an identical request multiple times,
to ignore the duplicates filter. Use it with care, or you will get into crawling loops.
Default to False.
errback
: 指定錯誤處理函數(shù)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)MySQL?數(shù)據(jù)庫表格創(chuàng)建?數(shù)據(jù)插入及獲取插入ID操作教程
這篇文章主要為大家介紹了python實現(xiàn)MySQL?數(shù)據(jù)庫表格創(chuàng)建?數(shù)據(jù)插入及獲取插入ID操作教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Python關(guān)鍵字之global與nonlocal
這篇文章主要為大家詳細介紹了Python關(guān)鍵字之global與nonlocal,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03tensorflow卷積神經(jīng)Inception?V3網(wǎng)絡結(jié)構(gòu)代碼解析
這篇文章主要為大家介紹了卷積神經(jīng)Inception?V3網(wǎng)絡結(jié)構(gòu)代碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05Flask的圖形化管理界面搭建框架Flask-Admin的使用教程
Flask-Admin是一個為Python的Flask框架服務的微型框架,可以像Django-Admin那樣為用戶生成Model層面的數(shù)據(jù)管理界面,接下來就一起來看一下Flask的圖形化管理界面搭建框架Flask-Admin的使用教程2016-06-06python實現(xiàn)將漢字轉(zhuǎn)換成漢語拼音的庫
這篇文章主要介紹了python實現(xiàn)將漢字轉(zhuǎn)換成漢語拼音的庫,涉及Python調(diào)用word.data字段實現(xiàn)將漢字轉(zhuǎn)換成拼音的功能,非常具有實用價值,需要的朋友可以參考下2015-05-05Python3中內(nèi)置類型bytes和str用法及byte和string之間各種編碼轉(zhuǎn)換 問題
這篇文章主要介紹了Python3中內(nèi)置類型bytes和str用法及byte和string之間各種編碼轉(zhuǎn)換問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09關(guān)于python 讀取csv最快的Datatable的用法,你都學會了嗎
大家都知道Datatable與眾不同就是快,還有一點大家需要注意使用Datatable庫需要python3.6及以上版本,接下來通過本文給大家介紹了python 讀取csv最快的Datatable的用法,需要的朋友可以參考下2021-10-10