您好,登錄后才能下訂單哦!
本篇內容介紹了“python scrapy框架中Request對象和Response對象怎么用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Request
對象主要是用來請求數據,爬取一頁的數據重新發送一個請求的時候調用,其源碼類的位置如
下圖所示:
這里給出其的源碼,該方法有很多參數:
class Request(object_ref): def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding='utf-8', priority=0, dont_filter=False, errback=None, flags=None, cb_kwargs=None): self._encoding = encoding # this one has to be set first self.method = str(method).upper() self._set_url(url) self._set_body(body) if not isinstance(priority, int): raise TypeError(f"Request priority not an integer: {priority!r}") self.priority = priority if callback is not None and not callable(callback): raise TypeError(f'callback must be a callable, got {type(callback).__name__}') if errback is not None and not callable(errback): raise TypeError(f'errback must be a callable, got {type(errback).__name__}') self.callback = callback self.errback = errback self.cookies = cookies or {} self.headers = Headers(headers or {}, encoding=encoding) self.dont_filter = dont_filter self._meta = dict(meta) if meta else None self._cb_kwargs = dict(cb_kwargs) if cb_kwargs else None self.flags = [] if flags is None else list(flags)
這里對各個做一個簡單的解釋:
url
:這個request對象發送請求的url。
callback
: 在下載器下載相應的數據后執行的回調函數。
method
:請求的方法,默認為GET方法,可以設置為其他方法。
headers
:請求頭,對于一些固定的設置,放在settings.py
中指定就可以了, 對于那些非固定的,可以在發送請求的時候指定。
body
:請求體,傳入的是請求參數。
meta
:比較常用。用于在不同的請求之間傳遞數據用。
encoding
:編碼。默認為utf-8,使用默認的就可以了。
dont_filter
: 表示不由調度器過濾,在執行多次重復的請求的時候用得比較多。
errback
:在發生錯誤的是有執行的函數。
有時候我們想要在請求數據的時候發送post請求,那么這時候需要使用Request
的子類FormRequest
來實現。如果想要在爬蟲一開始就發送POST請求,那么需要在爬蟲類中重寫start_requests(self)
方法,并且不在調用 start_urls
里的url。
Response
對象一般是由scrapy
給你自動構建的,因此開發者不需要關心如何創建Response
對象。而是如何使用它。Response
對象有很多屬性,可以用來提取數據的。
主要有以下屬性:
meta
: 從其他請求傳過來的meta屬性,可以用來保持多個請求之間的數據連接。
encoding
: 返回字符串編碼和解碼的格式。
text
: 將返回來的數據作為unicode字符串返回
body
: 將返回來的數據作為bytes 字符串返回。
xpath
: xpath
選擇器
css
: css選擇器。
“python scrapy框架中Request對象和Response對象怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。