Request和Response
阿新 • • 發佈:2018-10-28
ini resp ble 載器 css選擇器 爬蟲 head 裏的 can 的子類
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): self._encoding = encoding # this one has to be set first self.method = str(method).upper() self._set_url(url) self._set_body(body) assert isinstance(priority, int), "Request priority not an integer: %r" % priority self.priority = priority if callback is not None and not callable(callback): raise TypeError(‘callback must be a callable, got %s‘ % type(callback).__name__) if errback is not None and not callable(errback): raise TypeError(‘errback must be a callable, got %s‘ % type(errback).__name__) assert callback or not errback, "Cannot use errback without a callback" 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.flags = [] if flags is None else list(flags)
Request
對象在我們寫爬蟲,爬取一頁的數據需要重新發送一個請求的時候調用。這個類需要傳遞一些參數,其中比較常用的參數有:
url
:這個request對象發送請求的url。callback
:在下載器下載完相應的數據後執行的回調函數。method
:請求的方法。默認為GET
方法,可以設置為其他方法。headers
:請求頭,對於一寫固定的設置,放在settings.py
中指定就可以了。對於那些非固定的,可以發送請求的時候指定。meta
:比較常用。用於在不同的請求之間傳遞參數用的。encoding
:編碼。默認的為utf-8
,使用默認的就可以了。dont-filter
:表示不由調度器過濾。在執行多次重復的請求的時候用的比較多。errback
:在發生錯誤的時候執行的函數。
Response對象
Response
一般由Scrapy
給你自動構建的。因此開發者不需要關心如何構建Response
對象,而是如何使用他。Response
對象由很多屬性,可以用來提取數據的。主要由以下屬性:
meta
:從其他請求傳過來的meta屬性,可以用來保持多個請求之間的數據連接。encoding
:返回當前字符串編碼和解碼格式。text
:將返回來的數據作為unicode字符串返回。body
:將返回來的數據作為bytes字符串返回。xpath
:xpath選擇器。css
:css選擇器。
發送POST請求:
有時候我們想要在請求數據的時候發送post請求,那麽這個時候需要使用Request
FormRequest
來實現。如果想要在爬蟲一開始的時候就發送POST
請求,那麽需要在爬蟲類中重寫start_requests(self)
方法,並且不再調用start_urls
裏的url
。Request和Response