python爬蟲5:requests庫-案例3
前言
? python實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲非常簡單,只需要掌握一定的基礎(chǔ)知識(shí)和一定的庫使用技巧即可。本系列目標(biāo)旨在梳理相關(guān)知識(shí)點(diǎn),方便以后復(fù)習(xí)。
申明
? 本系列所涉及的代碼僅用于個(gè)人研究與討論,并不會(huì)對(duì)網(wǎng)站產(chǎn)生不好影響。
目錄結(jié)構(gòu)
1. 目標(biāo)
? 本次案例的主要目標(biāo)是幫助大家熟悉requests庫中的會(huì)話維持技巧、代理構(gòu)建等技巧。
? 再次說明,案例本身并不重要,重要的是如何去使用和分析,另外為了避免侵權(quán)之類的問題,我不會(huì)放涉及到網(wǎng)站的圖片,希望能理解。
2. 詳細(xì)流程
2.1 代理池的構(gòu)建
? 代理池的作用之前已經(jīng)講過了,但是如何構(gòu)建代理池呢?一般來說都是將那些可以使用的代理IP放入數(shù)據(jù)庫中,后面寫爬蟲程序的時(shí)候再調(diào)用,因?yàn)榇沓厥强梢砸恢笔褂玫墓ぞ摺?/p>
? 我之前寫過一個(gè)腳本,就是利用一個(gè)爬蟲專門去爬免費(fèi)代理網(wǎng)站的代理IP,然后再寫個(gè)爬蟲去爬取目標(biāo)網(wǎng)站。不過這里,我們就簡單來,把一些可用的代理IP放入一個(gè)字典中即可。
2.2 目標(biāo)確定
? 這次我換了一個(gè)小網(wǎng)站,具體地址我就不放了。
? 首先,利用上一篇的知識(shí),虛假登錄獲取data參數(shù)值,結(jié)果如下:
? 可以發(fā)現(xiàn)的是,參數(shù)構(gòu)建如下:
data = {
'action' : 'user_login',
'username' : 賬號(hào),
'password' : 密碼,
'rememberme' : 1
}
2.3 真實(shí)url確定
? 在上一講由于沒能實(shí)際運(yùn)行代碼,所以忘記講述這一點(diǎn)了。
? 就是我們登錄頁面的url有時(shí)候并不是我們?cè)诰W(wǎng)頁上看到的url,比如這個(gè)案例中,我在網(wǎng)頁上看到的登錄網(wǎng)址為:
xxxxxx_login.html
? 但是,實(shí)際上,我通過上面的POST頁面,發(fā)現(xiàn)真實(shí)的網(wǎng)址其實(shí)是一個(gè)名為xxxxx.php
頁面,所以大家一定要以抓取的POST頁面信息為準(zhǔn),才可以快準(zhǔn)狠地登錄成功。
2.4 代碼
? 有了上面的思路,代碼就很簡單了:
import requests
import time
# 網(wǎng)址
login_url = '真實(shí)登錄網(wǎng)址'
home_url = '個(gè)人用戶頁面網(wǎng)址'
# 參數(shù)
username = input('請(qǐng)輸入賬號(hào):')
password = input('請(qǐng)輸入密碼:')
data = {
'action': 'user_login',
'username': username,
'password': password,
'rememberme': '1'
}
# header參數(shù)
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}
# 代理池
proxies = {
'http' :'http://ip:端口',
xxxxx
}
# 請(qǐng)求
session = requests.session()
# 登錄
session.post(login_url,headers=headers,data=data,proxies=proxies)
time.sleep(6)
# 訪問個(gè)人主頁
response = session.get(home_url,headers=headers)
# 查看結(jié)果
print(response.status_code)
# 把個(gè)人用戶界面網(wǎng)頁拷貝下來證明登錄成功
with open('home.html','w',encoding='utf-8') as f:
f.write(response.content.decode('utf-8'))
? 這里又補(bǔ)充一個(gè)知識(shí)點(diǎn),就是你可以把網(wǎng)頁源碼保存到本地,以html后綴格式存儲(chǔ),然后可以用瀏覽器打開,這樣可以直觀看到爬取的結(jié)果。
? 此時(shí),我這里的結(jié)果如下:
3. 總結(jié)
? 到這篇文章為止,requests庫就講解完畢了,這里我簡單總結(jié)一下寫請(qǐng)求代碼時(shí)最需要注意的點(diǎn):文章來源:http://www.zghlxwxcb.cn/news/detail-646871.html
- headers參數(shù)不能忘記,現(xiàn)在網(wǎng)站最基本的都會(huì)排查headers參數(shù)
- 寫登錄爬蟲時(shí),一定要去通過瀏覽器提供的后臺(tái)工具,結(jié)合我上篇和這篇的知識(shí)點(diǎn),去抓取真實(shí)提交的POST頁面,找到參數(shù)和真實(shí)url
? 下一篇,開始講解解析庫的內(nèi)容。文章來源地址http://www.zghlxwxcb.cn/news/detail-646871.html
到了這里,關(guān)于python爬蟲5:requests庫-案例3的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!