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 = {
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
# 'Accept-Language': 'en',
#}
在請求中傳入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:當前響應的請求頭