一、安裝
pip install requests
二、基本使用
1、基本使用
類型 : models.Response
r.text : 獲取網(wǎng)站源碼
r.encoding :訪問或定制編碼方式
r.url :獲取請(qǐng)求的 url
r.content :響應(yīng)的字節(jié)類型
r.status_code :響應(yīng)的狀態(tài)碼
r.headers :響應(yīng)的頭信息
import requests
url = 'http://www.baidu.com'
response = requests.get(url=url)
# 一個(gè)類型 六個(gè)屬性
# Response 類型
print(type(response))
# 設(shè)置響應(yīng)的編碼格式
response.encoding = 'utf-8'
# 以字符串形式返回網(wǎng)頁源碼
print(response.text)
# 返回url地址
print(response.url)
# 返回的是二進(jìn)制的數(shù)據(jù)
print(response.content)
# 返回響應(yīng)的狀態(tài)碼
print(response.status_code)
# 返回的是響應(yīng)頭
print(response.headers)
2、與urllib區(qū)別
# urllib
# (1) 一個(gè)類型以及六個(gè)方法
# (2)get請(qǐng)求
# (3)post請(qǐng)求 百度翻譯
# (4)ajax的get請(qǐng)求
# (5)ajax的post請(qǐng)求
# (6)cookie登陸 微博
# (7)代理
# requests
# (1)一個(gè)類型以及六個(gè)屬性
# (2)get請(qǐng)求
# (3)post請(qǐng)求
# (4)代理
# (5)cookie 驗(yàn)證碼
import requests
url = 'https://www.baidu.com/s'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
data = {
'wd':'北京'
}
############################### GET ##########################
# url 請(qǐng)求資源路徑
# params 參數(shù)
# kwargs 字典
response = requests.get(url=url,params=data,headers=headers)
content = response.text
print(content)
# 總結(jié):
# (1)參數(shù)使用params傳遞
# (2)參數(shù)無需urlencode編碼
# (3)不需要請(qǐng)求對(duì)象的定制
# (4)請(qǐng)求資源路徑中的?可以加也可以不加
############################# POST ##########################
# url 請(qǐng)求地址
# data 請(qǐng)求參數(shù)
# kwargs 字典
response = requests.post(url=url,data=data,headers=headers)
content =response.text
import json
obj = json.loads(content,encoding='utf-8')
print(obj)
# 總結(jié):
# (1)post請(qǐng)求 是不需要編解碼
# (2)post請(qǐng)求的參數(shù)是data
# (3)不需要請(qǐng)求對(duì)象的定制
?
三、代理
import requests
url = 'http://www.baidu.com/s?'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
}
data = {
'wd' : 'ip'
}
proxy = {
'http':'120.194.55.139:6969'
}
response = requests.get(url=url,params=data,headers=headers,proxies=proxy)
content = response.text
with open('daili.html','w',encoding='utf-8')as fp:
fp.write(content)
四、cookie定制(破解驗(yàn)證碼)
找登錄接口
?找參數(shù)的值
python代碼
import requests
# 登錄頁面的url地址
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
}
# 獲取頁面的源碼
response = requests.get(url=url,headers=headers)
content = response.text
# 解析頁面源碼 獲取__VIEWSTATE __VIEWSTATEGENERATOR 這里使用bs4解析
from bs4 import BeautifulSoup
soup = BeautifulSoup(content,'lxml')
# 獲取__VIEWSTATE
viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value')
# 獲取__VIEWSTATEGENERATOR
viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')
# 接下來處理驗(yàn)證碼
# 獲取驗(yàn)證碼圖片
code = soup.select('#imgCode')[0].attrs.get('src')
code_url = 'https://so.gushiwen.cn' + code
# 下載驗(yàn)證碼圖片
# import urllib.request
# urllib.request.urlretrieve(url=code_url,filename='code.jpg')
# 使用上面方法下載驗(yàn)證碼后會(huì)使驗(yàn)證碼更新,從而使的每次都會(huì)提醒驗(yàn)證碼錯(cuò)誤
# requests里面有個(gè)方法session() 通過session的返回值就能使請(qǐng)求變?yōu)橐粋€(gè)對(duì)象
session = requests.session()
# 驗(yàn)證碼的url地址
response_code = session.get(code_url)
# 注意此時(shí)要使用二進(jìn)制的數(shù)據(jù) 因?yàn)槲覀円怯玫氖菆D片的下載
content_code = response_code.content
# wb的模式就是將二進(jìn)制的數(shù)據(jù)寫到文件
with open('code.jpg','wb')as fp:
fp.write(content_code)
# 獲取了驗(yàn)證碼的圖片之后 下載到本地 然后觀察驗(yàn)證碼 然后在控制臺(tái)輸入這個(gè)驗(yàn)證碼 就可以將這個(gè)值給code的參數(shù)
code_name = input('請(qǐng)輸入你的驗(yàn)證碼:')
# 點(diǎn)擊登錄
url_post = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
data_post = {
'__VIEWSTATE': viewstate,
'__VIEWSTATEGENERATOR': viewstategenerator,
'from': 'http://so.gushiwen.cn/user/collect.aspx',
'email': '自己賬號(hào)',
'pwd': '自己密碼',
'code': code_name,
'denglu': '登錄'
}
response_post = session.post(url=url_post,headers=headers,data=data_post)
content_post = response_post.text
with open('gushiwen.html','w',encoding='utf-8')as fp:
fp.write(content_post)
?五、破解驗(yàn)證碼——超級(jí)鷹(公司級(jí)別)
登錄超級(jí)鷹官網(wǎng):超級(jí)鷹驗(yàn)證碼識(shí)別-專業(yè)的驗(yàn)證碼云端識(shí)別服務(wù),讓驗(yàn)證碼識(shí)別更快速、更準(zhǔn)確、更強(qiáng)大
若之前沒有注冊(cè),則需要注冊(cè)新的用戶,并且進(jìn)行充值。
?進(jìn)入 用戶中心 后點(diǎn)擊?開發(fā)文檔
選擇襲擊使用的語言案例。
?下載好壓縮包解壓,并且把一下兩個(gè)文件在pycharm中打開。
??代碼中修改如下四處地方。
軟件ID的獲取方法如下:
進(jìn)入用戶中心? -->?軟件id? -->? 生成軟件ID -->?復(fù)制軟件id到代碼中
文章來源:http://www.zghlxwxcb.cn/news/detail-689534.html
?到此,運(yùn)行代碼就可以自動(dòng)識(shí)別圖片中的驗(yàn)證碼了。?文章來源地址http://www.zghlxwxcb.cn/news/detail-689534.html
到了這里,關(guān)于python爬蟲—requests的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!