99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

pyspider self.crawl

2023-02-16 16:06 更新

self.crawl

self.crawl(url,** kwargs)

self.crawl 是告訴pyspider應該抓取哪個url的主界面。

參數(shù):

網(wǎng)址

要抓取的網(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)存資源)。

exetime

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

ITAG

來自前沿頁面的標記,以顯示任務(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)系。

auto_recrawl

啟用后,每次都會重新繪制任務(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)

這兩個請求是一樣的。

數(shù)據(jù)

身體附加到請求。如果提供了字典,則將進行表單編碼。

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字典。

connect_timeout

初始連接超時(秒)。默認值:20

超時

獲取頁面的最長時間(以秒為單位)。默認值:120

allow_redirects

按照30x重定向默認值:True

validate_cert

對于HTTPS請求,驗證服務(wù)器的證書?默認值:True

代理

username:password@hostname:port要使用的代理服務(wù)器,目前僅支持http代理。

class Handler(BaseHandler):
    crawl_config = {
        'proxy': 'localhost:8080'
    }

Handler.crawl_config可用于proxy為整個項目設(shè)置代理。

ETAG

如果頁面內(nèi)容未更改,則使用HTTP Etag機制傳遞進程。默認值:True

最后修改

如果頁面內(nèi)容未更改,請使用HTTP Last-Modified標頭機制來傳遞進程。默認值:True

fetch_type

設(shè)置為js啟用JavaScript fetcher。默認值:無

js_script

在頁面加載之前或之后運行的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_run_at

運行通過js_scriptat document-start或指定的JavaScript document-end。默認:document-end

js_viewport_width / js_viewport_height

設(shè)置布局過程的JavaScript提取器的視口大小。

load_images

啟用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

任務(wù)id

唯一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。

cURL命令

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è)置項目級別的用戶代理。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號