❶ 怎麼解決使用python的requests獲得網頁時出現sslEOFError錯誤
importrequests
url="httplogin.html"
ret=requests.get(url,verify="/Test/ssl_address/qlchat.com.crt")
printret.status_code
通過 verify 指定證書,表示相信此證書(52.77.252.184.crt 是伺服器端證書);也可以用 verify=False,表示不驗證伺服器端的證書。
https的證書獲取:
通過Chrome裡面-設置-證書,可以導出該域名的ssl證書,然後放到指定路徑,verify=證書路徑。就能直接請求https了
❷ python爬蟲如何給url設置變數
url='http://xxxxxxx.simple.com/xxxxxxxx'
data={
'xxx':0,
'type':0,
'status':3,
'actName':''}
cookies={'xxxx':'xxxxxx',
'uid':'xxxxxx'}
data['xxx']=44
h=requests.get(url,params=data,cookies=cookies,timeout=3000)
#url可以通過h.url查看
requests可以通過params自動拼接
如果是urllib, 沒用過, 只知道parse可以拼接參數
>>>importurllib
>>>urllib.parse.urlencode({"a":11,"b":22})
'a=11&b=22'
❸ python2 能使用requests嗎
由於公司要用到模擬用戶登錄,於是用學校圖書館讀者登錄來進行練習。
工具是python2 + requests第三方庫+火狐瀏覽器的firebug進行http抓包
目標 用python成功登錄學校圖書館
接下來幾篇會利用urllib和urllib2標准庫進行登錄
以下為具體步驟:
1 打開學校圖書館網址,以下為登錄界面
綜合以上分析,利用requests庫進行模擬用戶登錄。這里的post參數採用了之前圖片的源碼形式,使得參數順序匹配
import requests
url = "http://210.32.205.60/login.aspx"
# 學校圖書館登錄url
header = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Connection":"keep-alive",
"Content-Type":"application/x-www-form-urlencoded",
"Host":"210.32.205.60",
"Referer": "http://210.32.205.60/login.aspx",
"Upgrade-Insecure-Requests":"1",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:54.0) Gecko/20100101 Firefox/54.0"
}
body = b'__VIEWSTATE=%uMtIIHXEj%&__VIEWSTATEGENERATOR=C2EE9ABB&__EVENTVALIDATION=%2FwEdAAbAeS%2BByzNg%%2FzVFQdp1z%2BnYWZ%%2BIuKmLNV%%3D%3D&DropDownList1=0&TextBox1=讀者號&TextBox2=密碼&ImageButton1.x=44&ImageButton1.y=12'r = requests.post(url, data=body, headers=header)
print r.text
以上為一次提交,沒有進行重定向截取。
如果想用reque庫截取重定向,在這個圖書館登錄中則需要進行兩次操作,這里相當於只做了post請求,頭部,post參數都不變,只不過在requests.post()內設置了參數
r = requests.post(url, data=body, headers=header, allow_redirects=False)
# 設置 allow_redirects=False 使得禁止重定向
aspid = r.headers["Set-Cookie"] # 返回頁面的頭部的cookie
print r.status_code # 輸出302
如果再想登陸圖書館頁面,那麼需要將cookie重新加入新的url上,進行get請求的提交,此時url為/Default.aspx.
url ="http://210.32.205.60/Default.aspx"
header = {
"Accept": "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*",
"Referer": "http://210.32.205.60/login.aspx",
"Accept-Language": "zh-CN",
"User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)",
"Accept-Encoding": "gzip, deflate",
"Host": "210.32.205.60",
"Connection": "Keep-Alive",
"Pragma": "no-cache",
"Cookie": aspid
}
r = requests.get(url=url,headers=header)
print r.status_code
print r.text
接下來的幾篇是利用python2的urllib2和urllib進行相同的模擬用戶登錄。
ps 由於urllib2處理重定向的時候不會將cookie帶上,會導致頁面不能正確爬取,所以要處理重定向。解決urllib重定向文章在此,分別介紹了urllib2自動處理重定向(帶上cookie),和urllib2阻止重定向,返回cookie。
利用urllib2進行自動處理重定向,模擬瀏覽器提交post一次,就可以登錄圖書館的文章在這。
利用urllib2處理重定向,使得重定向截斷,獲取cookie,根據cookie用代碼實現重定向,登錄圖書館的文章在此。
❹ python request post 方法 url是哪個
post方法中url是第一個參數。
❺ python requests包 中url是什麼樣子的
cookies對象基本上就是一個字典 把它轉換成一個包含元組的列表,然後用合適的分隔符連接起來就好了 import requestsresp = requests.get(url)cookies = resp.cookiesprint('; '.join(['='.join(item) for item in cookies.items()]))
❻ python介面自動化測試,requests都是測試有URL的介面,沒有URL的TCP介面怎麼測試
比如說呢,至少要有ip/dns和port吧
❼ pythonpost報錯requests.exceptions.ConnectionError(Connection aborted' BadStatusLine('Lorem Ipsum
http改成https試試
用curl代替python來測試一下,也就是多種方式post對比就容易檢查出是伺服器問題,還是python代碼問題
❽ 全方面的掌握Requests庫的使用【python爬蟲入門進階】(02)
上一篇文章簡單的介紹了 爬蟲相關的基礎知識點,介紹了一個標准爬蟲程序的三個步驟 。這篇文章就讓我們接著來學習。
本文重點介紹requests庫的使用以及爬蟲協議。之前也寫了一篇 Requests庫使用的博客 ,有興趣的小夥伴可以去看看。
前面介紹了Requests庫是用來抓取網頁源碼,請求介面的利器,整體上是要比urllib庫的request更加好用的庫。官網上將其稱之為唯一一個非轉基因的Python HTTP庫,人類可以安全享用。
Requests庫有7個主要方法。
不過我們平常最常用的方法還是GET方法和POST方法。
get請求方法是爬蟲中最常用到的方法,因為爬蟲主要就是爬取網頁的信息。最基礎的使用是
這里需要通過 res.encoding='utf-8' 設置響應結果的編碼格式是utf-8。不然可能會出現中文亂碼
如果響應結果是二進制數據的話則需要通過 res.content 方法來提取響應結果。
設置編碼的方式也可以是 res.content.decode('utf-8') 。
即
有時候get請求也需要傳入參數,這里可以直接將參數拼接到URL上或者通過params參數傳入一個字典。
運行結果是:
get請求只能傳入簡單的參數,如果參數比較復雜或者傳入的參數比較多的話則GET請求就不再適用了,這時候就需要適用post請求方法了。
Post請求的請求類型有三種:
以表單的方式提交數據是POST請求的默認的請求格式,只需要將參數放在一個字典中進行傳入即可。
這里將請求頭的數據放在一個名為header的字典中,然後在請求時通過headers參數傳入。在請求中設置了內容類型是 application/json ,編碼格式是 charset=utf-8
傳入的是一個json字元串,通過data參數進行傳入。json字元串可以直接寫也可以通過 json.mps(dict) 方法將一個字典序列化,就像下面這樣。
文件上傳與本節爬蟲的內容無關,在此就不過多介紹了。有興趣的小夥伴可以看看 Python中如何編寫介面,以及如何請求外部介面 這篇文章。
在網路請求中,我們常常會遇到狀態碼是3開頭的重定向問題,在Requests中是默認開啟允許重定向的,即遇到重定向時,會自動繼續訪問。通過將allow_redirects 屬性設置為False不允許重定向。
通過timeout屬性可以設置超時時間,單位是秒。get方法和post方法均可設置。
通過status_code屬性可以獲取介面的響應碼。
有時候我們使用了抓包工具,這時候由於抓包證書提供的證書並不是受信任的數字證書頒發機構頒發的,所以證書的驗證會失敗,所以我們就需要關閉證書驗證。在請求的時候把verify參數設置為False就可以關閉證書驗證了。
爬蟲協議也叫做robots協議,告訴網路蜘蛛哪些頁面可以爬取,哪些頁面不能爬取
爬蟲文件的規范是:
允許所有的機器人
本文詳細介紹了Request庫的使用
❾ 如何抽取所有二級網頁的url python requests
看你正則表達式的精準了。
你需要盡可能分析出,1級鏈接和 2級鏈接的 獨特的匹配規律,這樣正則匹配出來的結果才會更准確,不會包含其他不屬於1級鏈接和 2級鏈接的內容。
這樣,當然效率就高了 。
❿ python,requests中獲取網頁源代碼,與右鍵查看的源代碼不一致,求解!!! 下面是代碼,不知有何錯誤
requests請求網址url = 'https://www..com/s?wd=周傑倫'後,print(res.text) #列印的只是url = 'https://www..com/s?wd=周傑倫 這一個請求返回的響應體內容,
而如下圖,右鍵查看的頁面源代碼是你請求的網頁url加上其他頁面內的js請求,圖片等靜態資源請求,css等最終形成的頁面,所以兩者不一樣的