Python中怎么實現(xiàn)表單交互,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計、網(wǎng)站制作與策劃設(shè)計,廣漢網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:廣漢等地區(qū)。廣漢做網(wǎng)站價格咨詢:028-86922220
1、表單交互
import requests
params={
‘key1’:’value1’,
‘key2’:’value2’,
‘key3’:’value3’
}
html=requests.post(url,data=params)
print(html.text)
由于現(xiàn)在大多數(shù)網(wǎng)站都有多種登錄方式,通過短信或者微信登錄等,相對通過直接調(diào)用表單進行交互已經(jīng)比較麻煩,這里不做詳細介紹,主要表單交互可以通過登錄后來找到對應(yīng)的網(wǎng)頁,見下文。
2、逆向工程如何構(gòu)建表單
對于登錄后使用了異動加載的網(wǎng)頁,可以通過逆向工程構(gòu)架你表單來找到不同的網(wǎng)頁信息,下面我們先看一下如何構(gòu)建表單。
(1)登錄拉勾網(wǎng),打開Chrome瀏覽器,選擇Netwoek
(2)搜索關(guān)鍵字python得到post的表單信息見下圖一和下圖二
圖一
圖二
3、Cookie模擬登錄
有時候表單字段可能通過加密或者其它形式的包裝進行構(gòu)建,這樣就比較困難和麻煩,因此,這時候就有必要選擇通過提交Cookie信息進行模擬登錄會方便很多。
什么是Cookie?
Cookie是指某些網(wǎng)站為了辨別用戶身份、進行session跟蹤而存儲在用戶本地終端上的數(shù)據(jù)。一般互聯(lián)網(wǎng)和電商都是通過跟蹤Cookie來作為識別用戶的唯一標(biāo)識的。
可見Cookie是帶有用戶信息的,因此才可以通過Cookie來模擬登陸網(wǎng)站。
繼續(xù)通過拉勾網(wǎng)如下圖可以看到cookie如下:
通過代碼:
import requestsurl='https://www.lagou.com'headers={ 'cookie': 'xxx‘}html=requests.get(url,headers=headers)print(html.text)
得到登陸后的網(wǎng)頁源碼內(nèi)容:
4、案例實踐:爬取拉勾網(wǎng)招聘信息
拉勾網(wǎng)結(jié)合了異步加載技術(shù)和提交表單,讓我們來分析一下此網(wǎng)站。
分析思路:
(1)登陸打開拉勾網(wǎng)站,頁面如下,搜索關(guān)鍵字:大數(shù)據(jù)
(2)通過觀察,網(wǎng)頁元素不在網(wǎng)頁源代碼中,說明使用了異步加載技術(shù)。
(3)刷新頁面,查看newwork選項卡,選中XHR,可以看到異步加載(AJAX)和對應(yīng)的Response中返回的json信息,證明可以從這里拿到數(shù)據(jù)。
(4)通過翻頁,可以找到表單數(shù)據(jù),同時通過翻頁,pn會不斷變化,上述表單交互已經(jīng)介紹,這里不再贅述。
(5)在netwoek->Preview中,可以看到每頁信息數(shù),同時信息總數(shù)。
(6)由于通過單一的cookie會被限制,所以補充了一個動態(tài)的cookie進行抓取數(shù)據(jù),實驗后可行,大家可以參考
def get_cookie(): # 原始網(wǎng)頁的URL,即url_start url = 'https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=' s = requests.Session() s.get(url, headers=headers, timeout=3) # 請求首頁獲取cookies cookie = s.cookies # 為此次獲取的cookies return cookie
詳細代碼如下:
import requests
import json
import time
import pandas as pd
#import csv
headers = {
'origin': 'https://www.lagou.com',
'accept': 'xxxx',
'user-agent': 'xxxx',
'referer': 'xxxx'
}
# 獲取cookies值
def get_cookie():
# 原始網(wǎng)頁的URL,即url_start
url = 'https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput='
s = requests.Session()
s.get(url, headers=headers, timeout=3) # 請求首頁獲取cookies
cookie = s.cookies # 為此次獲取的cookies
return cookie
# 定義獲取頁數(shù)的函數(shù)
def get_page(url, params):
html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)
# 將網(wǎng)頁的Html文件加載為json文件
json_data = json.loads(html.text)
# 解析json文件,后跟中括號為解析的路徑
total_Count = json_data['content']['positionResult']['totalCount']
page_number = int(total_Count/15) if int(total_Count/15) < 30 else 30
# 調(diào)用get_info函數(shù),傳入url和頁數(shù)
get_info(url, page_number)
# 定義獲取招聘信息函數(shù)
def get_info(url, page):
for pn in range(1, page+1):
# post請求參數(shù)
params = {
"first": "true",
"pn": str(pn),
"kd": "大數(shù)據(jù)"
}
# 獲取信息 并捕獲異常
try:
html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)
#print(url, html.status_code)
# 將網(wǎng)頁的Html文件加載為json文件
json_data = json.loads(html.text)
# 解析json文件,后跟中括號為解析的路徑
results = json_data['content']['positionResult']['result']
df = pd.DataFrame(results)
#print(df.iloc[:,0:6])
if pn == 1:
total_df = df
else:
total_df = pd.concat([total_df,df],axis=0)
# 睡眠2秒
time.sleep(2)
except requests.exceptions.ConnectionError:
print("requests.exceptions.ConnectionError")
pass
#total_df.to_csv('招聘信息.csv', sep = ',', header = True, index = False)
total_df.to_excel('大數(shù)據(jù).xls',header=True, index=False)
# 原始網(wǎng)頁的URL
#請求JSON數(shù)據(jù)的URL
url = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"
params = {
"first": "true",
"pn": 1,
"kd": "大數(shù)據(jù)"
}
get_page(url,params)
關(guān)于Python中怎么實現(xiàn)表單交互問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)站標(biāo)題:Python中怎么實現(xiàn)表單交互
文章URL:http://www.rwnh.cn/article14/jsdede.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站制作、云服務(wù)器、小程序開發(fā)、微信小程序、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)