使用requests登陆古诗词网
生活随笔
收集整理的這篇文章主要介紹了
使用requests登陆古诗词网
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用requests登陸古詩詞網(wǎng)
# _*_ coding : utf-8 _*_ # @Time : 2023/2/8 16:50 # @Author : 李階熊 # @File : 登陸古詩文網(wǎng) # @Project : pythonProject# 通過登陸 然后進(jìn)入到主頁面# 通過找登陸接口我們發(fā)現(xiàn) 登陸的時候需要的參數(shù)很多 # __VIEWSTATE: uqM36LtLMHmQ0luwdxuoucqroaZOwCfJ1DXW4DvUOQcMEmtCpWNQXrr+SIsWbY7bYQkAt+fm066xQahnOEeWtJqAuIzGwihNaqpGib5pqTCgnnmo6xkHo8BT8GI3s6oyvKxQ8Qr/HzrYHjm3xi6iP5EITRU= # __VIEWSTATEGENERATOR: C93BE1AE # from: http://so.gushiwen.cn/user/collect.aspx # email: 13469114846 # pwd: sdfdsf # code: ISKU # denglu: 登錄# 我們觀察到_VIEWSTATE __VIEWSTATEGENERATOR code 是一個可以變化的量# 難點:1、_VIEWSTATE __VIEWSTATEGENERATOR 一般情況看不到的數(shù)據(jù) 都是再頁面的源碼中 # 我們觀察到這兩個數(shù)據(jù)再頁面的源碼中 所以我們需要獲取頁面的源碼 然后進(jìn)行解析就可以獲取了 # 2、驗證碼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; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', }# 獲取頁面的源碼 response = requests.get(url=url, headers=headers) content = response.text# 解析頁面源碼 然后獲取 _VIEWSTATE __VIEWSTATEGENERATORfrom bs4 import BeautifulSoupsoup = BeautifulSoup(content, 'lxml')# 獲取__VIEWSTATE viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value')# 獲取__VIEWSTATEGENERATOR viewstate_generator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')# 獲取驗證碼圖片code = soup.select('#imgCode')[0].attrs.get('src') code_url = 'https://so.gushiwen.cn' + code# 有坑 # import urllib.request # # urllib.request.urlretrieve(url=code_url, filename='code.jpg')# requests里面有一個方法 session() 通過session的返回值就能使請求變成一個對象session = requests.session()# 驗證碼的url的內(nèi)容 response_code = session.get(code_url)content_code = response_code.content# wb的模式就是將二進(jìn)制數(shù)據(jù)寫入到文件 with open('code.jpg', 'wb') as fp:fp.write(content_code)# 獲取驗證碼圖片之后 下載到本地 然后觀察驗證碼 然后在控制臺輸入這個驗證碼 就可以將這個值 code_name = input('請輸入你的驗證碼')# 點擊登陸 url_post = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'data_post = {'__VIEWSTATE': viewstate,'__VIEWSTATEGENERATOR': viewstate_generator,'from': 'http://so.gushiwen.cn/user/collect.aspx','email': '13469114846','pwd': 'iL@11031103','code': code_name,'denglu': '登錄' }response_post = session.post(url=url_post, headers=headers, data=data_post)content_post = response_post.textwith open('guzhichiwang.html', 'w', encoding='utf-8') as fp:fp.write(content_post)難點
1:隱藏域
2:驗證碼
總結(jié)
以上是生活随笔為你收集整理的使用requests登陆古诗词网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Noise-contrastive es
- 下一篇: JS判断是否为数字或为空