小編給大家分享一下python如何爬取ajax,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),鳳泉企業(yè)網(wǎng)站建設(shè),鳳泉品牌網(wǎng)站建設(shè),網(wǎng)站定制,鳳泉網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,鳳泉網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。使用python包:requests。
具體方法:
首先是定義自己headers,注意headers里面的User-Agent這一字段可以根據(jù)自己需求設(shè)計一個列表,用于隨機(jī)調(diào)換。
ajax數(shù)據(jù)的網(wǎng)頁特點:NetWork中的XHR網(wǎng)絡(luò)流中有一些ajax請求,其中它們request_url必定是一個ajax請求接口,并且headers里面的referer是其跳轉(zhuǎn)前的url,在構(gòu)造自己的headers的時候需要設(shè)置referer字段。
以拉勾網(wǎng)主頁搜索“java”為例:
ajax數(shù)據(jù)的抓取爬蟲和普通的網(wǎng)頁爬取多了一個url,一個是referer的url,放置于headers中。另外一個就是ajax_url,這個也是主要訪問url。
最重要的一點,ajax一般返回json數(shù)據(jù),所以抓取下來的數(shù)據(jù)解析形式有所不同。直接將結(jié)果集轉(zhuǎn)換成json結(jié)果集即可,訪問方式就是普通字典、列表訪問形式。
另外一個就是訪問參數(shù),若請求中帶有param,就將其構(gòu)造。若沒有可忽略。本例中有參數(shù),注意參數(shù)字典構(gòu)造方法
下面就展示出來一個簡單的完整代碼
from urllib.request import quote,unquote import random import requests keyword = quote('java').strip() print(keyword, type(keyword)) city = quote('鄭州').strip() print(unquote(city)) refer_url = 'https://www.lagou.com/jobs/list_%s?city=%s&cl=false&fromSearch=true&labelWords=&suginput=' % (keyword, city) ajax_url = 'https://www.lagou.com/jobs/positionAjax.json?city=%s&needAddtionalResult=false' %city user_agents=[ 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', ] data ={ 'first': 'true', 'pn': '1', 'kd': keyword, } headers={ 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Length': '46', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Host': 'www.lagou.com', 'Origin': 'https://www.lagou.com', 'Referer': refer_url, 'User-Agent': user_agents[random.randrange(0,3)], 'X-Anit-Forge-Code': '0', 'X-Anit-Forge-Token': 'None', 'X-Requested-With': 'XMLHttpRequest', } resp = requests.post(ajax_url,data=data, headers=headers) result = resp.json() print(result) # print(result) #result 就是最終獲得的json格式數(shù)據(jù) item = result['content']['positionResult']['result'][0] print(item) #item就是單個招聘條目信息 print("程序結(jié)束")
看完了這篇文章,相信你對python如何爬取ajax有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享標(biāo)題:python如何爬取ajax-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.rwnh.cn/article20/cejejo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、用戶體驗、移動網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、網(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)