真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中怎么實(shí)現(xiàn)表單交互

Python中怎么實(shí)現(xiàn)表單交互,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),廣漢網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:廣漢等地區(qū)。廣漢做網(wǎng)站價(jià)格咨詢: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)站都有多種登錄方式,通過(guò)短信或者微信登錄等,相對(duì)通過(guò)直接調(diào)用表單進(jìn)行交互已經(jīng)比較麻煩,這里不做詳細(xì)介紹,主要表單交互可以通過(guò)登錄后來(lái)找到對(duì)應(yīng)的網(wǎng)頁(yè),見(jiàn)下文。

2、逆向工程如何構(gòu)建表單

對(duì)于登錄后使用了異動(dòng)加載的網(wǎng)頁(yè),可以通過(guò)逆向工程構(gòu)架你表單來(lái)找到不同的網(wǎng)頁(yè)信息,下面我們先看一下如何構(gòu)建表單。

(1)登錄拉勾網(wǎng),打開(kāi)Chrome瀏覽器,選擇Netwoek

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

圖一

Python中怎么實(shí)現(xiàn)表單交互

圖二

Python中怎么實(shí)現(xiàn)表單交互

3、Cookie模擬登錄

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

什么是Cookie?

Cookie是指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而存儲(chǔ)在用戶本地終端上的數(shù)據(jù)。一般互聯(lián)網(wǎng)和電商都是通過(guò)跟蹤C(jī)ookie來(lái)作為識(shí)別用戶的唯一標(biāo)識(shí)的。

可見(jiàn)Cookie是帶有用戶信息的,因此才可以通過(guò)Cookie來(lái)模擬登陸網(wǎng)站。

繼續(xù)通過(guò)拉勾網(wǎng)如下圖可以看到cookie如下:

Python中怎么實(shí)現(xiàn)表單交互

通過(guò)代碼:

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

得到登陸后的網(wǎng)頁(yè)源碼內(nèi)容:

Python中怎么實(shí)現(xiàn)表單交互

4、案例實(shí)踐:爬取拉勾網(wǎng)招聘信息

拉勾網(wǎng)結(jié)合了異步加載技術(shù)和提交表單,讓我們來(lái)分析一下此網(wǎng)站。

分析思路:

(1)登陸打開(kāi)拉勾網(wǎng)站,頁(yè)面如下,搜索關(guān)鍵字:大數(shù)據(jù)

Python中怎么實(shí)現(xiàn)表單交互

(2)通過(guò)觀察,網(wǎng)頁(yè)元素不在網(wǎng)頁(yè)源代碼中,說(shuō)明使用了異步加載技術(shù)。

Python中怎么實(shí)現(xiàn)表單交互

(3)刷新頁(yè)面,查看newwork選項(xiàng)卡,選中XHR,可以看到異步加載(AJAX)和對(duì)應(yīng)的Response中返回的json信息,證明可以從這里拿到數(shù)據(jù)。

Python中怎么實(shí)現(xiàn)表單交互

Python中怎么實(shí)現(xiàn)表單交互

(4)通過(guò)翻頁(yè),可以找到表單數(shù)據(jù),同時(shí)通過(guò)翻頁(yè),pn會(huì)不斷變化,上述表單交互已經(jīng)介紹,這里不再贅述。

Python中怎么實(shí)現(xiàn)表單交互

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

Python中怎么實(shí)現(xiàn)表單交互

(6)由于通過(guò)單一的cookie會(huì)被限制,所以補(bǔ)充了一個(gè)動(dòng)態(tài)的cookie進(jìn)行抓取數(shù)據(jù),實(shí)驗(yàn)后可行,大家可以參考

def get_cookie():   # 原始網(wǎng)頁(yè)的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)  # 請(qǐng)求首頁(yè)獲取cookies   cookie = s.cookies  # 為此次獲取的cookies   return cookie

詳細(xì)代碼如下:

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():   # 原始網(wǎng)頁(yè)的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)  # 請(qǐng)求首頁(yè)獲取cookies   cookie = s.cookies  # 為此次獲取的cookies   return cookie
# 定義獲取頁(yè)數(shù)的函數(shù)def get_page(url, params):   html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)   # 將網(wǎng)頁(yè)的Html文件加載為json文件   json_data = json.loads(html.text)   # 解析json文件,后跟中括號(hào)為解析的路徑   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和頁(yè)數(shù)   get_info(url, page_number)
# 定義獲取招聘信息函數(shù)def get_info(url, page):   for pn in range(1, page+1):       # post請(qǐng)求參數(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)頁(yè)的Html文件加載為json文件           json_data = json.loads(html.text)           # 解析json文件,后跟中括號(hào)為解析的路徑           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)頁(yè)的URL#請(qǐng)求JSON數(shù)據(jù)的URLurl = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"params = {   "first": "true",   "pn": 1,   "kd": "大數(shù)據(jù)"}get_page(url,params)

關(guān)于Python中怎么實(shí)現(xiàn)表單交互問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


新聞名稱(chēng):Python中怎么實(shí)現(xiàn)表單交互
網(wǎng)頁(yè)路徑:http://weahome.cn/article/jsdede.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部