『壹』 python 爬蟲時,urllib2.HTTPError:HTTP Error 502:Bad Gateway是什麼原因怎麼解決
可能是那個網站阻止了這類的訪問,只要在請求中加上偽裝成瀏覽器的header就可以了,比如:
headers={
'User-Agent':'Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6'
}
req=urllib2.Request(
url="http://www.qiushike.com/imgrank"
,
headers=headers
)
myResponse=urllib2.urlopen(req)
『貳』 python登陸17zuoye.com
用python登錄,需要傳入cookie,並在cookie里把賬號密碼傳入進去就行
首先利用瀏覽器的開發工具:
importurllib,urllib2,cookielib
postdata=urllib.urlencode({
'j_username':'xxxx',#你的賬號
'j_password':'xxxx'#你的密碼
})
url='http://ucenter.17zuoye.com/j_spring_security_check'#登錄網址
ckfile='cookie.txt'創建一個文檔來存儲數據
cookie=cookielib.MozillaCookieJar(ckfile)
res=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(res)
cont=opener.open(url,postdata)
cookie.save(ignore_discard=True,ignore_expires=True)#保存cookie到本地的cookie.txt
已經搞定了,你可以再添加一個url2,用opener.open(url2)來驗證是否登錄成功
『叄』 python http requests 怎麼實現模擬登錄,提交表單
以下實例是一個完整的代碼,實現了從博客獲取內容發布至網路,分別實踐抓取博客內容、模擬登錄、表單提交這幾步;
#注意,以下程序是一個完全程序,如果只需要實現模擬登錄,提交表單,刪除抓取部分即可,相關的代碼已經清楚標注,可以根據自己實際情況修改。
代碼如下:
# -*- coding: utf-8 -*-
import re
import urllib
import urllib2
import cookielib
#第一步,獲取博客標題和正文 ,「IP」可以改為實際地址;
url = "IP"
sock = urllib.urlopen(url)
html = sock.read()
sock.close()
content = re.findall('(?<=blogstory">).*(?=<p class="right artical)', html, re.S)
content = re.findall('<script.*>.*</script>(.*)', content[0], re.S)
title = re.findall('(?<=<title>)(.*)-.* - CSDN.*(?=</title>)', html, re.S)
#根據文章獲取內容新建表單值
blog = {'spBlogTitle': title[0].decode('utf-8').encode('gbk'), #文章標題
'spBlogText': content[0].decode('utf-8').encode('gbk'),#文章內容
'ct': "1",
'cm': "1"}
del content
del title
#第二步,模擬登錄網路;
cj = cookielib.CookieJar()
#登陸網路的用戶名和密碼
post_data = urllib.urlencode({'username': '[username]', 'password': '[password]', 'pwd': '1'})
#登錄地址路徑
path = 'https://passport..com/?login'
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Opera/9.23')]
urllib2.install_opener(opener)
req = urllib2.Request(path, post_data)
conn = urllib2.urlopen(req)
#獲取網路登陸認證令牌
bd = urllib2.urlopen(urllib2.Request('http://hi..com/[username]/creat/blog')).read()
bd = re.findall('(?<=bdstoken\" value=\").*(?=ct)', bd, re.S)
blog['bdstoken'] = bd[0][:32]
#設置分類名
blog['spBlogCatName'] = 'php'
#第四步,比較表單,提交表單;req2 = urllib2.Request('http://hi..com/[username]/commit', urllib.urlencode(blog))
#最後,查看錶單提交後返回內容,檢驗;
print urllib2.urlopen(req2).read()
#注意:將[username]/[password]替換為自己真實用戶名和密碼
『肆』 如何在Python中使用urllib2
import urllib2
req = urllib2.Request('http://portal.huanuo-nsb.com/login')
html = urllib2.open(req)
html = html.read()
『伍』 python中的urllib2的302跳轉怎麼處理cookie
cookie只是HTTP頭中的鍵值對,你可以手動去請求前賦值,請求完保存。。。
或者使用包可實現:
importcookielib,urllib2
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r=opener.open("http://example.com/")
這里cj就會自己去實現請求完存儲,和請求前賦值了
官方文檔:https://docs.python.org/2/library/cookielib.html
『陸』 為什麼python使用urllib2這里會出現錯誤
表面現象看起來是,你發送的地址給google伺服器,但是此地址有問題,導致人家返回你錯誤,說是:
HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
而此地址,看起來,你是從瀏覽器之類的地方,拷貝過來的。
但是,實際上,如果需要程序模擬此過程的話,需要找到此地址中的各種參數,即:
num=100
hl=zh-CN
newwindow=1
safe=strict
q=inurl%3Aadmin_login.aspx
oq=inurl%3Aadmin_login.aspx
gs_l=serp.3...125521.131943.0.132041.38.31.1.0.0.3.209.2367.23j3j1.27.0...0.0...1c.1.bvH-WnKtKjg
中每個參數的值,是如何獲得的,
然後再用程序去模擬過程,生成對應的參數,
然後才是去將此地址發送給人家的google的伺服器,才能獲得你所想要的結果的。
總之一句話,先要自己搞懂內部執行的過程,然後才是用程序模擬此過程。
『柒』 如何在Python中使用urllib2
urllib2 默認會使用環境變數 http_proxy 來設置 HTTP Proxy。如果想在程序中明確控制 Proxy 而不受環境變數的影響,可以使用下面的方式:
import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http" : 'IP:8080'})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler)
else:
opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
這里要注意的一個細節,使用 urllib2.install_opener() 會設置 urllib2 的全局 opener 。這樣後面的使用會很方便,但不能做更細粒度的控制,比如想在程序中使用兩個不同的 Proxy 設置等。比較好的做法是不使用 install_opener 去更改全局的設置,而只是直接調用 opener 的 open 方法代替全局的 urlopen 方法。
『捌』 如何用python實現網頁自動登錄
這個你要用到BP,抓取數據包,通過分析數據包提交的表單,每次調用腳本的時候將表單進行提交,但一般這種可行比較低,看網頁的安全性做的如何,如果有驗證碼和token校驗的話你就不用試了。