pycharm 有沒有一種快捷鍵:將請求頭一鍵轉化為字典?
如上:每當我想攜帶這麼大一串請求頭請求url時,ctrl+c,Ctrl+v 到pycharm 就會成這樣:需要手動修改的地方太多了- - 傷神費時。所以 有木有一種快捷鍵,可以一鍵將請求頭轉化為字典?或者只需要改動少量部分然後一鍵生成字典的小技巧?
該回答首發在公眾號:不二小段
首先回答題主的問題,PyCharm沒有這種快捷鍵。但是可以使用正則替換來做:
PyCharm中替換的快捷鍵是Ctrl+R,選中Regex正則模式
手擼正則,還是有點麻煩
好吧其實也就是兩行正則。
源匹配為 (.*): (.*)$
替換匹配為 "$1": "$2",
(……寫完檢查時才發現好像複製了個Response header,反正一個意思)
使用頻率不高的話,這種辦法還是不錯的,適用於熟悉正則熟悉IDE工具的同學。
其他方法的話,下面放全文:
如何優雅地複製請求頭
『回』字有四種寫法。
——魯迅
複製請求頭可以說是寫爬蟲代碼的一個日常操作了,雖然不是所有網站都會檢校請求頭中的欄位,但是如果遇到爬蟲無法正常返回網頁內容時,我們的第一反應依然是,加個headers試試——從最常見的UA,Host,到防盜鏈的Referfer,有時要添加cookie,等等。
如果我們能夠明確地知道,加上哪一個,或者哪兩個,甚至哪幾個欄位就能正確請求,那便也算了,偏偏有時沒辦法確定問題出在哪裡,最簡單粗暴的做法還是全寫上吧。
當我們通過任何方式抓到一個請求的時候,總是能看到請求頭的。但是用起來卻不太理想——在Python中,我們往往需要將headers寫成字典,這件事的畫風是這樣:
一團亂麻,不是嗎
那麼接下來怎麼做呢…?今天給大家總結總結幾種做法吧。
首先是朋友之前一篇推文中的兩個做法
法一,不夠優雅:
盜圖,來自爬蟲小工具-copyheader
這種做法顯然是最原始手工的做法了…
當然了…程序員遇到重複性的工作就總想造輪子…於是這篇推文的作者給大家提供了一個輪子,支持pip安裝…(pip install copyheaders)
用輪子的法二:
依然是盜圖,來自爬蟲小工具-copyheader
當然了,客觀地講,這種輪子也就自己寫代碼時用用,如果代碼要分享出去,無關的依賴還是少一些好…大家感興趣詳見 爬蟲小工具-copyheader
那麼我平時怎麼做呢?以下再介紹三種方法。
法三:藉助IDE的正則替換(PyCharm為例)
PyCharm中替換的快捷鍵是Ctrl+R,選中Regex正則模式
手擼正則,還是有點麻煩
好吧其實也就是兩行正則。
源匹配為 (.*): (.*)$
替換匹配為 "$1": "$2",
(……寫完檢查時才發現好像複製了個Response header,反正一個意思)
使用頻率不高的話,這種辦法還是不錯的,適用於熟悉正則熟悉IDE工具的同學。
法四:Chrome插件Postman
Postman是很強大的調試工具,但是目前Google已經放棄了Chrome App,目前在商店裡只能直接搜索到插件。
你可以安裝插件以後點擊鏈接獲取Postman App:
之後就是使用了。
單從我們今天的目的——複製headers來看,操作如下:
開啟Postman Interceptor,訪問的任意請求都會被Postman截獲。
在Postman點擊請求-Code-選擇Python-選擇相應方式即可。
可以看到Postman支持非常多種語言的導出
可以看到Postman的確是個非常強大的工具,甚至可以直接幫我們生成requests代碼了,而不僅僅是把headers轉化為字典…
但是呢,我個人感覺使用Postman來干這件事有種殺雞焉用牛刀的感覺。這款工具太重了…大家需要衡量學習成本,只做爬蟲而不做Web開發的話估計用的會少一些。另一方面就是可能依然有人有人沒辦法訪問Google…
所以,需要Postman的同學,可以在公眾號回復postman獲取下載鏈接~
法五:使用curlconverter
這是我自己發現的一個辦法,不需要軟體不需要插件,是一個網頁服務。
https://curl.trillworks.com/
使用這個方法前我們需要知道什麼是curl。
curl是Linux命令行下的文件傳輸工具,可以直接訪問URL,支持多種協議和參數設置甚至cookie設置。簡單來說,就是可以模擬一個請求。
Chorme瀏覽器的開發工具支持直接copy as curl,所以我們只需要這麼做:
在開發工具中選中請求copy as curl,然後粘貼到網站表單中,獲得Python代碼。
這個網站只支持Python、NodeJS和PHP
說實話…這種輕量級的方法是我最喜歡的一種…
好了,至此我們今天一共介紹了五種辦法。當然辦法絕對不止這五種。
雖然只是一個很小的功能,依然可以通過很多辦法來提高效率和生產力。雖然探索這些方法本身的意義猶如學習回字的四種寫法,但是其實每種方法背後都代表著一種工具,不管是造輪子,正則,Postman還是curlconverter功能都遠不止用來構造一下字典。
你現在用的是什麼辦法?看完這篇文章你決定選擇哪種辦法呢?留言告訴我吧~
這種格式可以不
試試這行代碼:
dict([[h.partition(:)[0], h.partition(:)[2]] for h in rawheaders.split(
)])
rawheaders就是你從瀏覽器中複製來的報頭字元串
用法示例:
應該是有的,我再某個視頻教程上看見過這種手法,但是不知道快捷鍵是啥。
講真,這個我還真沒有用過,因為我每次都是複製幾個headers,並不是全部。這個自己寫成dict也不是很費勁吧
這個視頻裡面有講:
列操作,IntelliJ IDEA神器使用技巧教程-慕課網
謝邀
看到題主的邀請消息的時候,我是懵逼的
我是誰我在哪我要幹什麼
這個P啥玩意請啥頭………
有沒有……
嗯……
有嗎?………
要不算了就說我不會?
那不行,簡直打臉有木有
再說我戲那麼足
直接認慫多難看
於是
「沒有」
 ̄へ ̄
字正腔圓
鏗鏘有力
不卑不亢
男兒本色
差點暴露了我對於這個問題一無所知的事實
還好我傲嬌
又機智大兄弟你是真的懶,pycharm沒有,你試試用代碼吧 json
推薦閱讀:
※《用python寫網路爬蟲》學習心得筆記
※R學習整理筆記(二)——用rvest包爬取獵聘網數據【R Markdown呈現】
※xpath+mongodb抓取伯樂在線實戰
※【Python爬蟲】爬取教務處學生照片
※一、Requests庫