這篇文章主要介紹了Python爬蟲實現自動登陸、簽到功能的代碼,本文經過圖文並茂的形式給你們介紹的很是詳細,對你們的學習或工做具備必定的參考借鑑價值,須要的朋友能夠參考下javascript
前幾天在一個素材網站上下載東西,積分老是不夠用,積分是怎麼來的呢,是天天登陸網站簽到得到的,固然也能購買,不想去買,由於偶爾纔會用一次,可是每到用的時候就發現積分不夠,又記不得天天去簽到,因此就有了這個糾結的事情。怎麼辦呢,想辦法唄,因而我就用python寫了個小爬蟲,天天去自動幫她簽到掙積分。廢話很少說,下面就講講代碼。java
我這裏用的是python3.4,使用python2.x的朋友若是有須要請繞道查看別的文章。python
工具:Fiddlerweb
首先下載安裝Fiddler,這個工具是用來監聽網絡請求,有助於你分析請求連接和參數。json
打開目標網站:http://www.17sucai.com/,而後點擊登陸瀏覽器
好了,先別急着登陸,打開你的Fiddler,此時Fiddler裏面是沒有監聽到網絡請求的,而後回到頁面,輸入郵箱和密碼,點擊登陸,下面再到fiddler裏面去看微信
這裏面的第一個請求就是你點擊登陸的網絡請求,點擊這個連接能夠在右邊看到你的一些請求信息cookie
而後點擊WebForms能夠看到你的請求參數,也就是用戶名和密碼網絡
下面咱們有代碼來實現登陸功能app
import urllib.request
import urllib
import gzip
import http.cookiejar
#定義一個方法用於生成請求頭信息,處理cookie
def getOpener(head):
# deal with the Cookies
<pre name="code" class="python"> cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener
#定義一個方法來解壓返回信息
def ungzip(data):
try: # 嘗試解壓
print('正在解壓.....')
data = gzip.decompress(data)
print('解壓完畢!')
except:
print('未經壓縮, 無需解壓')
return data
#封裝頭信息,假裝成瀏覽器
header = {
'Connection': 'Keep-Alive',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'X-Requested-With': 'XMLHttpRequest',
'Host': 'www.17sucai.com',
}
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
id = 'xxxxxxxxxxxxx'#你的用戶名
password = 'xxxxxxx'#你的密碼
postDict = {
'email': id,
'password': password,
}
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
print(data)
好了,接下來清空一下你的Fiddler,而後運行這個程序,看一下你的Fiddler
你能夠點擊這個連接,看看右邊的請求信息和你用瀏覽器請求的是否是同樣
下面是程序後代打印的信息
code=200表示登錄成功
code=200表示登錄成功
解析來就須要獲取到簽到的url,這裏你須要一個沒有簽到的帳號在網站中點擊簽到按鈕,而後經過Fiddler來獲取到簽到的連接和須要的信息。
而後點擊「簽到」,簽到成功後到Fiddler中查看捕捉到的url
點擊這個url能夠在右邊查看訪問這個連接時所須要的頭信息和cookies神馬的,咱們已經登陸成功後直接使用cookies就好了,python對cookies的處理作好了封裝,下面是個人代碼中對cookies的使用
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
下面是簽到成功返回的信息:code=200表示請求成功,day=1表示連續簽到一天,score=20表示得到的積分數
下面放出完整代碼,固然,爲了測試代碼簽到,你還須要你一沒有簽到過的帳號
import urllib.request
import urllib
import gzip
import http.cookiejar
def getOpener(head):
# deal with the Cookies
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener
def ungzip(data):
try: # 嘗試解壓
print('正在解壓.....')
data = gzip.decompress(data)
print('解壓完畢!')
except:
print('未經壓縮, 無需解壓')
return data
header = {
'Connection': 'Keep-Alive',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'X-Requested-With': 'XMLHttpRequest',
'Host': 'www.17sucai.com',
}
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
id = 'xxxxxxx'
password = 'xxxxxxx'
postDict = {
'email': id,
'password': password,
}
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
print(data)
url = 'http://www.17sucai.com/member/signin' #簽到的地址
op = opener.open(url)
data = op.read()
data = ungzip(data)
print(data)
相比登陸,簽到也就是在登陸完成後從新打開一個連接而已,因爲個人帳號都已經簽到過了,這裏就不在貼運行代碼的圖 了。
接下來要作的就是在你電腦上寫個bat 腳本,再在「任務計劃」中添加一個定時任務就好了。
在此以前你還須要配置一下python的環境變量,這裏就不在贅述了。
到此這篇關於Python爬蟲實現自動登陸、簽到功能的代碼的文章就介紹到這了
------------------- End -------------------
掃下方二維碼加老師微信或是搜索老師微信號:XTUOL1988【備註學習Python】領取Python web開發,Python爬蟲,Python數據分析,人工智能等學習教程。帶你從零基礎系統性的學好Python!也能夠加老師建的Python技術學習教程qq裙:245345507,兩者加一個就能夠!
歡迎你們點贊,留言,轉發,轉載,感謝你們的相伴與支持
萬水千山老是情,點個【在看】行不行
*聲明:本文於網絡整理,版權歸原做者全部,如來源信息有誤或侵犯權益,請聯繫咱們刪除或受權事宜。
/今日留言主題/
隨便說一兩句吧~