中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么實現表單交互

發布時間:2021-07-10 13:45:42 來源:億速云 閱讀:275 作者:Leah 欄目:大數據

Python中怎么實現表單交互,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1、表單交互

import requests
params={  ‘key1’:’value1’,  ‘key2’:’value2’,  ‘key3’:’value3’}html=requests.post(url,data=params)print(html.text)

        由于現在大多數網站都有多種登錄方式,通過短信或者微信登錄等,相對通過直接調用表單進行交互已經比較麻煩,這里不做詳細介紹,主要表單交互可以通過登錄后來找到對應的網頁,見下文。

2、逆向工程如何構建表單

對于登錄后使用了異動加載的網頁,可以通過逆向工程構架你表單來找到不同的網頁信息,下面我們先看一下如何構建表單。

(1)登錄拉勾網,打開Chrome瀏覽器,選擇Netwoek

(2)搜索關鍵字python得到post的表單信息見下圖一和下圖二

圖一

Python中怎么實現表單交互

圖二

Python中怎么實現表單交互

3、Cookie模擬登錄

        有時候表單字段可能通過加密或者其它形式的包裝進行構建,這樣就比較困難和麻煩,因此,這時候就有必要選擇通過提交Cookie信息進行模擬登錄會方便很多。

什么是Cookie?

Cookie是指某些網站為了辨別用戶身份、進行session跟蹤而存儲在用戶本地終端上的數據。一般互聯網和電商都是通過跟蹤Cookie來作為識別用戶的唯一標識的。

可見Cookie是帶有用戶信息的,因此才可以通過Cookie來模擬登陸網站。

繼續通過拉勾網如下圖可以看到cookie如下:

Python中怎么實現表單交互

通過代碼:

import requestsurl='https://www.lagou.com'headers={   'cookie': 'xxx‘}html=requests.get(url,headers=headers)print(html.text)

得到登陸后的網頁源碼內容:

Python中怎么實現表單交互

4、案例實踐:爬取拉勾網招聘信息

拉勾網結合了異步加載技術和提交表單,讓我們來分析一下此網站。

分析思路:

(1)登陸打開拉勾網站,頁面如下,搜索關鍵字:大數據

Python中怎么實現表單交互

(2)通過觀察,網頁元素不在網頁源代碼中,說明使用了異步加載技術。

Python中怎么實現表單交互

(3)刷新頁面,查看newwork選項卡,選中XHR,可以看到異步加載(AJAX)和對應的Response中返回的json信息,證明可以從這里拿到數據。

Python中怎么實現表單交互

Python中怎么實現表單交互

(4)通過翻頁,可以找到表單數據,同時通過翻頁,pn會不斷變化,上述表單交互已經介紹,這里不再贅述。

Python中怎么實現表單交互

(5)在netwoek->Preview中,可以看到每頁信息數,同時信息總數。

Python中怎么實現表單交互

(6)由于通過單一的cookie會被限制,所以補充了一個動態的cookie進行抓取數據,實驗后可行,大家可以參考

def get_cookie():   # 原始網頁的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 requestsimport jsonimport timeimport pandas as pd#import csv
headers = {   'origin': 'https://www.lagou.com',   'accept': 'xxxx',   'user-agent': 'xxxx',   'referer': 'xxxx'}
# 獲取cookies值def get_cookie():   # 原始網頁的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
# 定義獲取頁數的函數def get_page(url, params):   html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)   # 將網頁的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   # 調用get_info函數,傳入url和頁數   get_info(url, page_number)
# 定義獲取招聘信息函數def get_info(url, page):   for pn in range(1, page+1):       # post請求參數       params = {           "first": "true",           "pn": str(pn),           "kd": "大數據"       }       # 獲取信息 并捕獲異常       try:           html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)           #print(url, html.status_code)           # 將網頁的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('大數據.xls',header=True, index=False)
# 原始網頁的URL#請求JSON數據的URLurl = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"params = {   "first": "true",   "pn": 1,   "kd": "大數據"}get_page(url,params)

關于Python中怎么實現表單交互問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通许县| 泰来县| 抚州市| 称多县| 娄底市| 磴口县| 太原市| 喀喇沁旗| 安达市| 元江| 色达县| 龙陵县| 宁都县| 台北市| 九龙坡区| 龙川县| 朔州市| 乡城县| 科技| 广昌县| 随州市| 元氏县| 孙吴县| 获嘉县| 华阴市| 高台县| 灌云县| 金门县| 松滋市| 赤壁市| 偃师市| 海阳市| 邹平县| 南城县| 嘉荫县| 翼城县| 丰台区| 平乡县| 丰顺县| 虹口区| 南投县|