Python爬蟲 關於scrapy模組的請求頭

2021-08-20 21:52:11 字數 4510 閱讀 2360

開發環境python2.7 + scrapy 1.1.2

測試請求頭**:

瀏覽器請求頭大全:

命令列執行,新建爬蟲

scrapy startproject myspider

cd myspider

scrapy genspider scrapy_spider httpbin.org

我們通過對 的請求,檢視本次請求的瀏覽器資訊,可以開啟看一看是否是自己的瀏覽器資訊

改寫生成的scrapy_spider.py檔案

# 請求的鏈結

"",)

defparse

(self, response):

# 列印出相應結果

print response.text

if __name__ == '__main__':

from scrapy import cmdline

cmdline.execute("scrapy crawl scrapy_spider".split())如果是你正好使用mac本,正好使用pycharm可以按快捷鍵啟動爬蟲

shift + control + r

當然,如果是windows那就右鍵啟動吧

將返回的文字複製到 格式化成便於檢視的json格式,下面操作亦然,不再贅述。

,

"headers":,

"origin":"39.155.188.22"

, "url":""

}

看到了吧,預設的請求頭是

"user-agent":"scrapy/1.1.2 (+"
既然這樣的話,那我們修改下請求頭,達到偽造的效果

開啟下面的鏈結,選乙個自己喜歡的請求頭

pages/useragentstring.php?name=chrome

這裡使用chrome瀏覽器請求頭

此方式設定後,覆蓋掉scrapy預設的請求頭,全域性生效,即所有爬蟲都可以享受

settings.py檔案中找到如下**

# crawl responsibly by identifying yourself (and your website) on the user-agent

# user_agent = 'myspider (+'

解除注釋,修改為自己的請求頭

# crawl responsibly by identifying yourself (and your website) on the user-agent
執行爬蟲,驗證效果

此方式設定後,單個爬蟲生效,此爬蟲的所有連線都享受

# 新新增的**

custom_settings =

# -----------

start_urls = (

"",)再次訪問,發現我們的請求頭已經成功更換

此方法對單個鏈結生效, 只是此次請求的這個鏈結享受

request方法中設定headers引數

import scrapy

# 請求頭

# 新加的**

defstart_requests

(self):

for url in self.start_urls:

yield scrapy.request(url, headers=)

# ------------

defparse

(self, response):

print response.text

測試效果

此方法可以從整個專案中去修改請求頭的設定規則,變化多端,不同的寫法,可以配置出不同的設定方式,下面是乙個比較簡單的示例

我們參考scrapy預設處理請求頭的中介軟體

from scrapy.**********middlewares.useragent import useragentmiddleware
編寫中介軟體

# middlewares.py

class

randomuseragentmiddleware

(object):

defprocess_request

(self, request, spider):

request.headers['user-agent']= ""

# 絕對設定,其他設定都不生效

我們可以從下面找到預設設定

from scrapy.settings import default_settings
找到專案中對請求頭起作用的中介軟體

'scrapy.**********middlewares.useragent.useragentmiddleware': 400,
settings.py或者custom_settings替換原有的中介軟體

"**********_middlewares"

:

這樣可以從全域性,或者區域性替換掉請求頭規則

如果作如下設定

# settings.py

user_agent = "settings"

# scrapy_spider.py

custom_settings =

headers=

執行效果為:

"user-agent":"header"
注釋掉headers

"user-agent":"custom_settings"
注釋掉custom_settings

"user-agent":"settings"
注釋掉settings

"user-agent":"scrapy/1.1.2 (+"
可見優先順序為:

headers>custom_settings>settings.py>scrapy預設

注意user-agent引數的寫法

headers=)

如果寫錯了,很可能發生奇怪的事情

headers=

請求頭中多了scrapy…

其實,很好區分:

user-agent: 瀏覽器請求頭引數,html**中經常用-

user_agent: python變數

建議:

每次寫瀏覽器引數,如果怕寫錯就開啟自己的瀏覽器,隨便測試乙個頁面,從裡邊複製

設定方式

作用效果

scrapy預設

所用爬蟲所有請求

settings.py /user_agent=""所用爬蟲所有請求

custom_settings =單個爬蟲所有請求

headers=單個請求

中介軟體方式**********middleware

視編寫規則而定

**從上至下,優先順序逐漸增加,中介軟體除外,一般掌握三種方式就夠用了:

順便打個廣告

最近想寫乙個開源庫,chinesename中文取名,已經實現基本的取名,不過名字需要優化,如果有想一起搞事情的同學,可以一起

Python 爬蟲 關於requests庫

1 requests 有try except模式,利用r.raise for status 函式引發except機制 2 requests.get url,kwargs 裡面的引數有headers 定製http頭 kv r requests.get url,headers kv params url...

python爬蟲關於scrapy的安裝與簡述

scrapy是乙個為了爬取 資料,提取結構性資料而編寫的應用框架。可以應用在包括資料探勘,資訊處理或儲存歷史資料等 scrapy的安裝方式有多種,本身所需要的依賴的庫也比較多,由於同眾人一樣用的主流3.幾版本的py和windows平台,所以簡介下在windows平台的安裝過程 1.如果本身是在ana...

關於python爬蟲中的細節問題

關於python爬蟲中的細節問題 當我學習python爬蟲用到beautifulsoup的時候我自己注意到的乙個小問題 html this is a good man soup beautifulsoup html,lxml print soup.p.prettify print soup.p.sp...