開發環境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...