日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python项目之古诗文网

發布時間:2025/3/15 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python项目之古诗文网 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、學習資源

二、分析

1、先找登錄口,也就是什么情況下允許登錄。

2、打開網頁源碼找參數

?3、獲取圖片驗證碼

4、登錄 (有坑)

?5、成功登錄

?三、項目源碼


一、學習資源

尚硅谷Python爬蟲教程小白零基礎速通(含python基礎+爬蟲案例)_嗶哩嗶哩_bilibili

二、分析

1、先找登錄口,也就是什么情況下允許登錄。

? ? ? ? 首先打開古詩文網站的官網,先檢查網頁(F12或者右鍵點擊檢查)然后登錄,此時輸入錯誤的密碼(切記),不是要真正的登錄進去,而是為了找登陸口。通過找登陸接口(login)發現,登錄的時候需要的參數有很多。#觀察到 __VIEWSTATE, __VIEWSTATEGENERATOR ,code 三個是一個可以變化的量。

2、打開網頁源碼找參數

觀察到這兩個數據在頁面的源碼中 所以我們需要獲取頁面的源碼 然后進行解析就可以獲取了

?3、獲取圖片驗證碼

4、登錄 (有坑)

? ? ? ? 此時登錄所需要的數據全部獲取到了,接下來就是登錄了

? ? ? ? 此時登錄時發現驗證碼是錯誤的,因為第一次請求下載圖片和下一次返回的信息的驗證碼不是一個了,相當于動態的驗證碼已經換了一個了,但是下載的是前一個。

?5、成功登錄

此時有個小問題,當程序運行的時候,左邊的圖片加載沒那么快,稍微等會就可以了或者去到本地文件中去看

?

?三、項目源碼

# coding=utf-8 #通過登錄 然后進入到主頁面#(1)先找登錄接口,也就是什么情況下才允許登錄 #(2)通過找登錄接口(login)發現,登錄的時候需要的參數很多 # __VIEWSTATE: eVgBnMThU95H2Pnl+vX1f9AtwKsdvG99QKbMzfVZkHrYs5+4t+83zenZVqGsl6OIio5aS2fojk1glAHlUuvNmBw0hw3MnKMSWrQV7jGNj0MJo6Cam0SUg+TW454= # __VIEWSTATEGENERATOR: C93BE1AE # from: http://so.gushiwen.cn/user/collect.aspx # email: 595165358@qq.com #用戶名 # pwd: action #密碼 # code: B3FP #驗證碼 # denglu: 登錄#觀察到 __VIEWSTATE __VIEWSTATEGENERATOR code 三個是一個可以變化的量#難點:(1)__VIEWSTATE __VIEWSTATEGENERATOR 一般情況下看不到的數據都是在頁面的源碼中(隱藏域) # 觀察到這兩個數據在頁面的源碼中 所以我們需要獲取頁面的源碼 然后進行解析就可以獲取了 # (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 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36" } #獲取頁面的源碼 response = requests.get(url=url,headers=headers) content = response.text #輸出內容看有沒有需要的數據,判斷有沒有反爬 # print(content) #解析頁面源碼,獲取__VIEWSTATE __VIEWSTATEGENERATOR from bs4 import BeautifulSoup soup = BeautifulSoup(content,'lxml') #獲取__VIEWSTATE viewsdate = soup.select('#__VIEWSTATE')[0].attrs.get('value')#返回的是個列表 #獲取__VIEWSTATEGENERATOR viewsdategenerator = 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的內容 response_code = session.get(code_url) #注意 此時要使用二進制數據 因為我們要使用的是圖片的下載 content_code = response_code.content #wb的模式就是將二進制數據寫入到文件 with open('code1.jpg','wb') as fp:fp.write(content_code)#獲取了驗證碼的圖片之后,然后下載到本地 然后觀察驗證碼 觀察之后 然后在控制臺輸入這個驗證碼 就可以將這個值給 #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': viewsdate,'__VIEWSTATEGENERATOR': viewsdategenerator,'from': 'http://so.gushiwen.cn/user/collect.aspx','email': '17671886917' , #用戶名'pwd': '123456789', #密碼'code': code_name , #驗證碼'denglu': '登錄' }response_post = session.post(url=url,headers=headers,data = data_post) content_post = response_post.text with open('gushiwen.html','w',encoding='utf-8') as fp:fp.write(content_post)#難點 #(1)隱藏域 #(2)驗證碼

總結

以上是生活随笔為你收集整理的python项目之古诗文网的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。