self.crawl 是告訴pyspider應該抓取哪個url的主界面。
要抓取的網(wǎng)址或網(wǎng)址列表。
解析響應的方法。_default:__call___
def on_start(self):
self.crawl('http://scrapy.org/', callback=self.index_page)
以下參數(shù)是可選的
任務(wù)的有效期。在此期間,該頁面將被視為未修改。默認值:-1(從不重新抓取)
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
...
回調(diào)解析的每個頁面index_page都將被視為在10天內(nèi)未被更改。如果您在上次抓取后的10天內(nèi)提交任務(wù),則會將其丟棄。
優(yōu)先 任務(wù)安排的優(yōu)先級越高越好。默認值:0
```
def index_page(self):
self.crawl('http://www.example.org/page2.html', callback=self.index_page)
self.crawl('http://www.example.org/233.html', callback=self.detail_page,
priority=1)
```
該頁面233.html之前將被抓取page2.html。使用此參數(shù)可以執(zhí)行BFS并減少隊列中的任務(wù)數(shù)(這可能會花費更多的內(nèi)存資源)。
unix時間戳中任務(wù)的執(zhí)行時間。默認值:0(立即)
```
import time
def on_start(self):
self.crawl('http://www.example.org/', callback=self.callback,
exetime=time.time()+30*60)
```
該頁面將在30分鐘后被抓取。
失敗時重試次數(shù)。默認值:3
來自前沿頁面的標記,以顯示任務(wù)的潛在修改。它將與其最后一個值進行比較,在更改時重新抓取。默認值:無
```
def index_page(self, response):
for item in response.doc('.item').items():
self.crawl(item.find('a').attr.url, callback=self.detail_page,
itag=item.find('.update-time').text())
```
在樣本中,.update-time用作itag。如果它沒有改變,請求將被丟棄。
或者,如果要重新啟動所有任務(wù),可以使用itagwith Handler.crawl_config指定腳本版本。
class Handler(BaseHandler):
crawl_config = {
'itag': 'v223'
}
修改腳本后再更改itag的值,然后再次單擊“運行”按鈕。如果沒有設(shè)置之前沒關(guān)系。
啟用后,每次都會重新繪制任務(wù)age。默認值:False
def on_start(self):
self.crawl('http://www.example.org/', callback=self.callback,
age=5*60*60, auto_recrawl=True)
頁面將每age5小時重新啟動一次。
要使用的HTTP方法。默認值:GET
PARAMS 要附加到URL的URL參數(shù)字典。
def on_start(self):
self.crawl('http://httpbin.org/get', callback=self.callback,
params={'a': 123, 'b': 'c'})
self.crawl('http://httpbin.org/get?a=123&b=c', callback=self.callback)
這兩個請求是一樣的。
身體附加到請求。如果提供了字典,則將進行表單編碼。
def on_start(self):
self.crawl('http://httpbin.org/post', callback=self.callback,
method='POST', data={'a': 123, 'b': 'c'})
{field: {filename: 'content'}}分段上傳的文件字典
請求的User-Agent
要發(fā)送的標頭字典。
附加到此請求的Cookie字典。
初始連接超時(秒)。默認值:20
獲取頁面的最長時間(以秒為單位)。默認值:120
按照30x重定向默認值:True
對于HTTPS請求,驗證服務(wù)器的證書?默認值:True
username:password@hostname:port要使用的代理服務(wù)器,目前僅支持http代理。
class Handler(BaseHandler):
crawl_config = {
'proxy': 'localhost:8080'
}
Handler.crawl_config可用于proxy為整個項目設(shè)置代理。
如果頁面內(nèi)容未更改,則使用HTTP Etag機制傳遞進程。默認值:True
如果頁面內(nèi)容未更改,請使用HTTP Last-Modified標頭機制來傳遞進程。默認值:True
設(shè)置為js啟用JavaScript fetcher。默認值:無
在頁面加載之前或之后運行的JavaScript,應該被類似的函數(shù)包裝function() { document.write("binux"); }。
def on_start(self):
self.crawl('http://www.example.org/', callback=self.callback,
fetch_type='js', js_script='''
function() {
window.scrollTo(0,document.body.scrollHeight);
return 123;
}
''')
該腳本將頁面滾動到底部。函數(shù)中返回的值可以通過捕獲Response.js_script_result。
運行通過js_scriptat document-start或指定的JavaScript document-end。默認:document-end
設(shè)置布局過程的JavaScript提取器的視口大小。
啟用JavaScript fetcher時加載圖像。默認值:False
一個對象傳遞給回調(diào)方法,可以通過訪問response.save。
def on_start(self):
self.crawl('http://www.example.org/', callback=self.callback,
save={'a': 123})
def callback(self, response):
return response.save['a']
123 將被退回 callback
唯一id用于標識任務(wù),默認是URL的MD5檢查碼,可以通過方法覆蓋 def get_taskid(self, task)
import json
from pyspider.libs.utils import md5string
def get_taskid(self, task):
return md5string(task['url']+json.dumps(task['fetch'].get('data', '')))
默認情況下,只有url是md5 -ed作為taskid,上面的代碼作為taskid的data一部分添加了POST請求。
即使任務(wù)處于ACTIVE狀態(tài),也強制更新任務(wù)參數(shù)。
取消任務(wù),應該用于force_update取消活動任務(wù)。要取消auto_recrawl任務(wù),您也應該設(shè)置auto_recrawl=False。
self.crawl(curl_command)
cURL是一個用于發(fā)出HTTP請求的命令行工具。它可以很容易地從Chrome Devtools> Network面板中獲得,右鍵單擊請求并“Copy as cURL”。
您可以使用cURL命令作為第一個參數(shù)self.crawl。它將解析命令并像curl一樣發(fā)出HTTP請求。
@config(** kwargs)
self.crawl使用裝飾方法作為回調(diào)時的默認參數(shù)。例如:
@config(age=15*60)
def index_page(self, response):
self.crawl('http://www.example.org/list-1.html', callback=self.index_page)
self.crawl('http://www.example.org/product-233', callback=self.detail_page)
@config(age=10*24*60*60)
def detail_page(self, response):
return {...}
age的list-1.html是15分鐘,而age的product-233.html是10天。因為回調(diào)product-233.html是detail_page,意味著它是一個detail_page共享配置detail_page。
Handler.crawl_config = {} self.crawl整個項目的默認參數(shù)。crawl_config調(diào)度程序中的參數(shù)(priority,retries,exetime,age,itag,force_update,auto_recrawl,cancel)將在創(chuàng)建任務(wù)時加入,fetcher和processor的參數(shù)將在執(zhí)行時連接。之后您可以使用此機制更改獲取配置(例如cookie)。
crawl_config = {
'headers': {
'User-Agent': 'GoogleBot',
}
}
...
crawl_config設(shè)置項目級別的用戶代理。
更多建議: