網絡爬蟲--24.【selenium實戰】實現拉勾網爬蟲之--分析接口獲取數據

文章目錄

  • 一. 思路概述
  • 二. 分析數據接口
  • 三. 詳細代碼

一. 思路概述

1.拉勾網采用Ajax技術,加載網頁時會向后端發送Ajax異步請求,因此首先找到數據接口;

2.后端會返回json的數據,分析數據,找到單個招聘對應的positionId,拼接出具體的url;

3.解析url,使用xpath獲取數據。

二. 分析數據接口

在這里插入圖片描述

在這里插入圖片描述

三. 詳細代碼

#encoding: utf-8import requests
from lxml import etree
import time
import reheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',"Referer": 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',"Cookie": 'user_trace_token=20200524155122-083f0df9-307f-44ee-8266-fceb6af1028b; _ga=GA1.2.728245592.1590306686; LGUID=20200524155125-3d15f82a-9111-4024-98da-9c1422b856dd; JSESSIONID=ABAAAECABFAACEA42866F7C54F46B971C0B595641303F73; WEBTJ-ID=20200524155129-17245aa50d74ec-0946ac3961652a-f7d1d38-1327104-17245aa50d980; RECOMMEND_TIP=true; _gid=GA1.2.369120051.1590306690; index_location_city=%E5%8C%97%E4%BA%AC; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2217245aab6d623b-09a44787242115-f7d1d38-1327104-17245aab6d7237%22%2C%22%24device_id%22%3A%2217245aab6d623b-09a44787242115-f7d1d38-1327104-17245aab6d7237%22%7D; sajssdk_2015_cross_new_user=1; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1590306685,1590324851; LGSID=20200524205410-e3cbacc7-ae0f-4d56-a775-67d45085e31d; PRE_UTM=m_cf_cpt_baidu_pcbt; PRE_HOST=sp0.baidu.com; PRE_SITE=https%3A%2F%2Fsp0.baidu.com%2F9q9JcDHa2gU2pMbgoY3K%2Fadrc.php%3Ft%3D06KL00c00fA1VH%5F0w3dM0FNkUsKEU%5FGX00000rUBx7C00000xs000y.THL0oUhY1x60UWY3rj04n1cdnNtzndqCmyqxTAT0T1dhmymYmhm1P10snH6dmvR10ZRqfbwDfHuDPWnsnRP7f1uDPbfLrDc1rHPDPjfknY7ArjD0mHdL5iuVmv-b5Hn1PWRzP1DYnHThTZFEuA-b5HDv0ARqpZwYTZnlQzqLILT8UA7MULR8mvqVQvk9UhwGUhTVTA7Muiqsmzq1uy7zmv68pZwVUjqdIAdxTvqdThP-5ydxmvuxmLKYgvF9pywdgLKWmMf0mLFW5HR4PWRs%26tpl%3Dtpl%5F11534%5F22672%5F17382%26l%3D1518133990%26attach%3Dlocation%253D%2526linkName%253D%2525E6%2525A0%252587%2525E5%252587%252586%2525E5%2525A4%2525B4%2525E9%252583%2525A8-%2525E6%2525A0%252587%2525E9%2525A2%252598-%2525E4%2525B8%2525BB%2525E6%2525A0%252587%2525E9%2525A2%252598%2526linkText%253D%2525E3%252580%252590%2525E6%25258B%252589%2525E5%25258B%2525BE%2525E6%25258B%25259B%2525E8%252581%252598%2525E3%252580%252591%2525E5%2525AE%252598%2525E6%252596%2525B9%2525E7%2525BD%252591%2525E7%2525AB%252599%252520-%252520%2525E4%2525BA%252592%2525E8%252581%252594%2525E7%2525BD%252591%2525E9%2525AB%252598%2525E8%252596%2525AA%2525E5%2525A5%2525BD%2525E5%2525B7%2525A5%2525E4%2525BD%25259C%2525EF%2525BC%25258C%2525E4%2525B8%25258A%2525E6%25258B%252589%2525E5%25258B%2525BE%21%2526xp%253Did%28%252522m3365271417%5Fcanvas%252522%29%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FH2%25255B1%25255D%25252FA%25255B1%25255D%2526linkType%253D%2526checksum%253D154%26ie%3Dutf-8%26f%3D8%26tn%3D88093251%5F23%5Fhao%5Fpg%26wd%3D%25E6%258B%2589%25E5%258B%25BE%25E7%25BD%2591%26oq%3D%25E6%258B%2589%25E5%258B%25BE%25E7%25BD%2591%26rqlang%3Dcn; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Flanding-page%2Fpc%2Fsearch.html%3Futm%5Fsource%3Dm%5Fcf%5Fcpt%5Fbaidu%5Fpcbt; TG-TRACK-CODE=index_search; X_HTTP_TOKEN=50fc797f56a45533494523095182b5415766d31319; _gat=1; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1590325496; LGRID=20200524210515-c04502d0-30cb-4056-bbd3-4d96e0564e1e; SEARCH_ID=00630409e0a54ce59315f7af9b9fcce1','Origin': 'https://www.lagou.com',"X-Anit-Forge-Code": "0","X-Anit-Forge-Token": "None",'X-Requested-With': "XMLHttpRequest"
}def request_list_page():url = 'https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false'data = {'first': "false",'pn': 1,'kd': 'python'}for x in range(1,21):data['pn'] = xresponse = requests.post(url, headers=headers, data=data)# print(type(response))# json方法:如果返回來的是json數據。那么這個方法會自動的load成字典result = response.json()# print(result)positions = result['content']['positionResult']['positionId']for position in positions:positionId = position['positionId']position_url = 'https://www.lagou.com/jobs/%s.html' % positionIdprint(position_url)parse_postion_detail(position_url)breakbreakdef parse_postion_detail(url):positions = []response = requests.get(url,headers=headers)text = response.texthtml = etree.HTML(text)position_name = html.xpath("//span[@class='name']/text()")[0]job_request_spans = html.xpath("//dd[@class='job_request']//span")salary = job_request_spans[0].xpath('.//text()')[0].strip()city = job_request_spans[1].xpath(".//text()")[0].strip()city = re.sub(r"[\s/]","",city)work_years = job_request_spans[2].xpath(".//text()")[0].strip()work_years = re.sub(r"[\s/]","",work_years)education = job_request_spans[3].xpath(".//text()")[0].strip()education = re.sub(r"[\s/]","",education)desc = "".join(html.xpath("//dd[@class='job_bt']//text()")).strip()position = {'name': position_name,'salary': salary,'city': city,'work_years': work_years,'education': education,'desc': desc}positions.append(position)print(position)print('=' * 40)def main():request_list_page()if __name__ == '__main__':main()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451941.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451941.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451941.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

18條工作感想:不要不情愿地工作

18條工作感想:不要不情愿地工作。人生有兩個基點支撐:家庭與工作。對工作不滿意,就是毀掉一半的人生。 001 不要不情愿地工作。不情愿,就一定沒熱情,沒激情,沒動力,就不會用心……那么&#xf…

bzoj 1999: [Noip2007]Core樹網的核【樹的直徑+單調隊列】

我要懶死了&#xff0c;所以依然是lyd的課件截圖 注意是min{max(max(d[uk]),dis(u1,ui),dis(uj,un))}&#xff0c;每次都從這三個的max里取min #include<iostream> #include<cstdio> using namespace std; const int N500005; int n,m,h[N],cnt,d[N],s,t,mx,f[N],a…

01-匯編初學

0、前言 對于一個iOS App來說&#xff0c;它其實就是一個安裝在手機中的可執行文件&#xff0c;這個可執行文件本質上是二進制文件&#xff0c;它由iPhone手機上的CPU執行。如果我們需要對操作系統、App進行深入了解&#xff0c;以及App的逆向都需要我們熟悉匯編語言 1、匯編語…

jquery.dataTables.min.js:62 Uncaught TypeError: Cannot read property ‘style‘ of undefined原因

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯&#xff1a; jquery.dataTables.min.js:62 Uncaught TypeError: Cannot read property style of undefined 原因&#xff1a;data…

ASCII Unicode GBK UTF的聯系

快下班時&#xff0c;愛問問題的小朋友Nico又問了一個問題&#xff1a; "sqlserver里面有char和nchar&#xff0c;那個n據說是指unicode的數據&#xff0c;這個是什么意思。" 并不是所有簡單的問題都很容易回答&#xff0c;就像這個問題一樣。于是我答應專門寫一篇BL…

網絡爬蟲--25.【selenium實戰】實現拉勾網爬蟲之--selenium獲取數據

代碼實現 #encoding: utf-8from selenium import webdriver from lxml import etree import re import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by…

Java 設計模式-【單例模式】

單例解決了什么問題&#xff1a;為了節約系統資源&#xff0c;有時需要確保系統中某個類只有唯一一個實例&#xff0c;當這個唯一實例創建成功之后&#xff0c;我們無法再創建一個同類型的其他對象&#xff0c;所有的操作都只能基于這個唯一實例。為了確保對象的唯一性&#xf…

Lua游戲開發----模塊

1&#xff1a;游戲目錄結構對模塊的理解&#xff1a; Base&#xff0c;Common&#xff0c;Game這三個文件夾下都有自己的moduleConfig文件。 base文件夾下的moduleConfig.lua文件是存放游戲基礎的模塊&#xff08;例如&#xff1a;游戲視圖準備&#xff0c;發牌&#xff0c;托管…

css 引用 方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 CSS 樣式一共 3 中使用方法 ——內聯式樣式表行樣式<div style"color:#000;"></div>只能操作1個標簽&#xff0…

java構造方法

構造方法是一種特殊的方法&#xff0c;它是一個與類同名且沒有返回值類型的方法。對象的創建就是通過構造方法來完成&#xff0c;其功能主要是完成對象的初始化。當類實例化一個對象時會自動調用構造方法。構造方法和其他方法一樣也可以重載。 構造方法就是與類同名的那個方法…

轉 單實例的寫法

目錄 餓漢法單線程寫法考慮線程安全的寫法兼顧線程安全和效率的寫法坑靜態內部類法枚舉寫法總結參考資料轉載: 你真的會寫單例模式嗎——Java實現 單例模式可能是代碼最少的模式了&#xff0c;但是少不一定意味著簡單&#xff0c;想要用好、用對單例模式&#xff0c;還真得費一…

網絡爬蟲--26.Scrapy中下載器中間件Downloader Middlewares的使用

文章目錄一. Downloader Middlewares二. 設置隨機請求頭三. ip代理池中間件一. Downloader Middlewares 二. 設置隨機請求頭 三. ip代理池中間件

變量名和方法名

變量名&#xff1a;第一個單詞的首字母小寫&#xff0c;后面每一個單詞的首字母大寫。如userName; 方法名&#xff1a;第一個單詞的首字母小寫&#xff0c;后面每一個單詞的首字母大寫。如setName&#xff08;&#xff09;; 寫出讓人一眼看懂的變量名和方法名&#xff0c;命名應…

openfire服務器

openfire(原名Wildfire或者JiveMessenger)是由Java語言編寫的、基于XMPP協議的服務器&#xff0c;具有跨平臺能力&#xff0c;獲得了Apache2.0許可證。 openfire是基于XMPP協議的IM的服務器端的一個實現&#xff0c;兩個用戶想要進行通訊&#xff0c;首先要連接到Openfire。服…

解決eclipse配置Tomcat時找不到server選項(Mars.2也可用)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 集成Eclipse和Tomcat時找不到server選項&#xff1a; 按照網上的步驟如下&#xff1a; 在Eclipse中&#xff0c;窗口(window)——首選項…

網絡爬蟲--27.csv文件的讀取和寫入

文章目錄一. csv文件二. 讀取csv文件的兩種方式三. 寫入csv文件的兩種方式一. csv文件 二. 讀取csv文件的兩種方式 import csvdef read_csv_demo1():with open(classroom1.csv,r,encodingutf-8,newline) as fp:# reader是一個迭代器reader csv.reader(fp)next(reader)for x i…

Quiver快速入門

Quiver快速入門 裝載自&#xff1a;https://github.com/HappenApps/Quiver/wiki/Quiver%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8Quiver 是一個程序員專用的記事本應用&#xff0c;可輕松混合文本、代碼、Markdown、LaTeX 到一個記事本中。提供強大的代碼編輯功能&#xff0c;以及…

const指針和指向常量的指針

先看下面六種寫法&#xff1a; 1. const int p;2. const int *p;3. int const* p;4. int * const p;5. const int * const p;6. int const * const p; 那么我們應該怎么區分上面的寫法到底是指向常量的指針還是const指針(表示指針本身是常量)呢&#xff1f; 一個簡便方法&#…

配置SQL Server的身份驗證方式

下面的文章來源于網絡&#xff0c;講的是怎樣配置SQL Server 2005登陸驗證方式&#xff0c;但是內容同樣適用于SQL Server 2008. 配置SQL Server的身份驗證方式 在默認情況下&#xff0c;SQL Server 2005 Express是采用集成的Windows安全驗證且禁用了sa登錄名。為了工作組環境下…

計算機程序設計藝術+第3卷:排序與查找(第二版)pdf

下載地址&#xff1a;網盤下載 《計算機程序設計藝術排序和查找(第3卷)(第2版)》內容簡介&#xff1a;這是對第3卷的頭一次修訂&#xff0c;不僅是對經典計算機排序和查找技術的最全面介紹&#xff0c;而且還對第1卷中的數據結構處理技術作了進一步的擴充&#xff0c;通盤考慮了…