1.為了讓程式請求模仿的更像瀏覽器,需要在headers請求頭上新增一些引數
2.headers請求頭的部分重要引數:
Host (主機和埠號)
Connection (連結型別)
Upgrade-Insecure-Requests (升級為HTTPS請求)
User-Agent (瀏覽器名稱)
Accept (傳輸檔案型別)
Referer (頁面跳轉處)
Accept-Encoding(檔案編解碼格式)
Cookie (Cookie)
x-requested-with :XMLHttpRequest (是Ajax 非同步請求)
3.# 請求一個url,建立了一個Request物件
scrapy.Resquest(
url,
callback=xxx,
headers=xxx
)
3.scrapy的Resquest物件具有的例項屬性
這些引數為None時(建立Request物件未傳入),會使用配置中預設的引數
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):
1.headers為None時採用預設的請求頭資訊
預設的請求頭資訊在配置檔案中(可以在這裡開啟註釋修改請求頭,也可以在建立Request物件時傳入headers,形式為鍵值對
但是headers不能定義cookie)
#DEFAULT_REQUEST_HEADERS = {
#}
在請求中傳入headers
scrapy.Request(
self.start_urls[0],
callback=self.parse,
headers={xx:xx,xx:xx} # 這些引數會和預設請求頭的引數進行合併,然後請求時帶上合併後的請求頭
)
4.獲取請求頭和響應頭的引數(引數名不確定時可以開啟瀏覽器開發者工具檢視)
response.request.headers.getlist(引數名)
response.headers.getlist(引數名)
5.response響應物件
response.url:當前響應的url地址
response.request.url:當前響應對應的請求的url地址
response.headers:響應頭
response.body:響應體,也就是html程式碼,預設是byte型別
response.requests.headers:當前響應的請求頭
本作品採用《CC 協議》,轉載必須註明作者和本文連結