使用requests爬取拉勾網python職位數據

爬蟲目的

本文是想通過爬取拉勾網Python相關崗位數據,簡單梳理Requestsxpath的使用方法。

代碼部分并沒有做封裝,數據請求也比較簡單,所以該項目只是為了熟悉requests爬蟲的基本原理,無法用于穩定的爬蟲項目。

爬蟲工具

這次使用Requests庫發送http請求,然后用lxml.etree解析HTML文檔對象,并使用xpath獲取職位信息。

Requests簡介
Requests是一款目前非常流行的http請求庫,使用python編寫,能非常方便的對網頁Requests進行爬取。

官網里介紹說:Requests is an elegant and simple HTTP library for Python, built for human beings.
Requests優雅、簡易,專為人類打造!

總而言之,Requests用起來簡單順手。

Requests庫可以使用pip或者conda安裝,本文python環境為py3.6。

試試對百度首頁進行數據請求:

# 導入requests模塊
import requests<br>
# 發出http請求
re = requests.get("https://www.baidu.com/")
# 查看響應狀態
print(re.status_code)
# 查看url
print(re.url)
# 查看響應內容
print(re.text)
# 查看編碼
print(re.encoding)
# 二進制響應內容
print(re.content)
# json響應內容
print(re.json)

xpath簡介
xpath 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷。
對獲取的數據進行解析需要用到lxml庫,lxml庫是Python的一個解析庫,支持HTML和XML的解析,支持XPath。

開始數據采集

1、請求地址:
https://www.lagou.com/zhaopin/Python/

2、需要爬取的內容
獲取職位概況信息,包括:

  • 職位名稱
  • 公司名稱
  • 公司簡介
  • 薪水
  • 職位招聘對象
  • 工作職責
  • 工作要求

3、查看html
如果你使用chrome瀏覽器,登陸拉勾網,按F12可以進入開發者工具頁面:

這時候你會看到該頁面的html網頁源碼。

接下來需要尋找崗位信息對應的源碼,比如說我想要獲取職位名稱:

你會看到開發者工具頁面左上角有個箭頭標志,你需要點擊它,然后再點擊崗位名稱,就能看到對應的源碼。

知道對應的源碼后,我們就可以利用xpath提取里面的文本。

4、利用requests發出數據請求

# 請求頭
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 Core/1.47.933.400 QQBrowser/9.4.8699.400',}# 發出數據請求,返回response響應對象
r = requests.get('https://www.lagou.com/zhaopin/Python/',headers=headers)
# 進行utf-8編碼
r.encoding = "utf-8"

5、利用xpath提取數據

# 構造一個xpath解析對象
selector = etree.HTML(r.text)
# 職位編號,一頁共有14個職位,所以這里可以傳遞0~13任意數字
row_num = str(0)
'''獲取職位概況信息,包括:職位名稱、公司名稱、公司簡介、薪水、職位招聘對象'''
# p_name 職位名稱
p_name = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//h3/text()'.format(row_num))[0]
# p_company 招聘公司名稱
p_company = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//div[@class="company_name"]/a/text()'.format(row_num))[0]
# p_industry 招聘公司簡介
p_industry = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//div[@class="industry"]/text()'.format(row_num))[0]
# p_money 職位薪資
p_money = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//span[@class="money"]/text()'.format(row_num))[0]
# p_require 職位招聘對象
p_require = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//div[@class="li_b_l"]/text()'.format(row_num))[2]
# 該職位詳細信息跳轉鏈接
p_href = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//a[@class="position_link"]/@href'.format(row_num))[0]

崗位職責和要求的信息在另外的網頁,所以要先獲取對應網址,再進行數據請求。

''' 獲取工作職責和工作要求等詳細信息'''
# 返回response響應對象
r_detail = requests.get(p_href,headers=headers)
# 進行utf-8編碼
r_detail.encoding = "utf-8"
# 解析HTML對象
selector_detail = etree.HTML(r_detail.text)
# p_detail 工作職責和工作要求信息
p_detail = selector_detail.xpath('//div[@class="job-detail"]/p//text()')

將所有信息放進列表并打印:

'''將獲取到的有效信息放到列表中'''
p_list = [p_name, p_company, p_industry.strip(), p_money, p_require.strip(),"\n ".join(p_detail)]
for i in p_list:print(i)

輸出:

總結

本文使用requests和xpath工具對拉勾網python職位數據進行爬取并解析,旨在了解requests和xpath的使用方法。

對于想翻頁爬取所有崗位信息,本文并無介紹。有興趣的童鞋可以更改地址參數,對代碼進行動態包裝,嘗試爬取所有python崗位信息。

最后,推薦一款不錯的自動化爬蟲工具-亮數據。

亮數據平臺提供了強大的數據采集工具,比如Web Scraper IDE、亮數據瀏覽器、SERP API等,能夠自動化地從網站上抓取所需數據,無需分析目標平臺的接口,直接使用亮數據提供的方案即可安全穩定地獲取數據。

網站:https://get.brightdata.com/weijun

亮數據瀏覽器支持對多個網頁進行批量數據抓取,適用于需要JavaScript渲染的頁面或需要進行網頁交互的場景。

另外,亮數據瀏覽器內置了自動網站解鎖功能,能夠應對各種反爬蟲機制,確保數據的順利抓取。它能兼容多種自動化工具,如Puppeteer、Playwright和Selenium等,用戶可以根據需求選擇合適的工具進行數據抓取。

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

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

相關文章

LVS 負載均衡群集

一&#xff1a;LVS群集應用基礎 1.1&#xff1a;概述 1.群集的類型 無論是哪種群集&#xff0c; 都至少包括兩臺節點服務器&#xff0c; 而對外表現為一個整體&#xff0c; 只提供一個訪問入口。根據群集所針對的目標差異&#xff0c; 可分為以下三種類型。 負載均衡群集&a…

使用U盤重裝系統

目錄 一、 制作啟動盤 1. 準備一個U盤和一臺電腦 2. 下載win10安裝包 二、安裝操作系統 1. 插入系統安裝盤 2. 通過進入BIOS界面進入到我們自己制作的啟動盤上 三、安裝成功后進行常規設置 一、 制作啟動盤 1. 準備一個U盤和一臺電腦 注意&#xff1a;提前備份好U盤內的…

jQuery Tooltip 插件使用教程

jQuery Tooltip 插件使用教程 引言 jQuery Tooltip 插件是 jQuery UI 套件的一部分,它為網頁元素添加了交互式的提示框功能。通過這個插件,開發者可以輕松地為鏈接、按鈕、圖片等元素添加自定義的提示信息,從而增強用戶的交互體驗。本文將詳細介紹如何使用 jQuery Tooltip…

JDK1.8下載、安裝與配置完整圖文2024最新教程

一、報錯 運行Pycharm時&#xff0c;報錯No JVM installation found. Please install a JDK.If you already have a JDK installed, define a JAVA_HOME variable in Computer >System Properties > System Settings > Environment Variables. 首先可以檢查是否已安裝…

【C語言】qsort()函數詳解:能給萬物排序的神奇函數

&#x1f984;個人主頁:修修修也 &#x1f38f;所屬專欄:C語言 ??操作環境:Visual Studio 2022 目錄 一.qsort()函數的基本信息及功能 二.常見的排序算法及冒泡排序 三.逐一解讀qsort()函數的參數及其原理 1.void* base 2.size_t num 3.size_t size 4.int (*compar)(c…

2024西安國際儲能產業博覽會將于12月5日開幕!

2024西部國際儲能產業博覽會 同期舉辦&#xff1a;2024西部國際氫能源及燃料電池產業博覽會 2024年12月5-7日 西安國際會展中心 規劃展會規模&#xff1a; 50,000 ㎡ 450 60000人次 20場 展區面積 預邀展商 專業觀眾 行業…

節水增效,蜂窩物聯智能灌溉助力農業升級!

智能灌溉的優勢主要體現在以下幾個方面&#xff1a; 1. 提高效率&#xff1a;智能灌溉可以根據作物生長的不同階段和環境條件自動調整灌溉時間和水量&#xff0c;減少人工干預的頻率和時間&#xff0c;提高了灌溉效率。 2. 節約水資源&#xff1a;智能灌溉可以根據土壤濕度和…

Python爬蟲實戰案例——王者榮耀皮膚抓取

大家好&#xff0c;我是你們的老朋友——南楓&#xff0c;今天我們一起來學習一下該如何抓取大家經常玩的游戲——王者榮耀里面的所有英雄的皮膚。 老規矩&#xff0c;直接上代碼&#xff1a; 導入我們需要使用到的&#xff0c;也是唯一用到的庫&#xff1a; 我們要抓取皮膚其…

網絡物理隔離

網絡物理隔離是網絡安全領域中的一種基本策略&#xff0c;其核心目的是通過物理方式將網絡或網絡設備分隔開來&#xff0c;以確保數據安全、降低風險并提升系統的整體安全性。網絡物理隔離不僅防止了未經授權的訪問&#xff0c;也顯著降低了來自外部或內部威脅的風險。以下是網…

每天一個數據分析題(四百)- 一元線性回歸模型

評價一元線性回歸模型擬合程度時&#xff0c;主要根據&#xff08; &#xff09;的數值 A. 相關系數 B. R2 C. SSE D. SSR 數據分析認證考試介紹&#xff1a;點擊進入 題目來源于CDA模擬題庫 點擊此處獲取答案 數據分析專項練習題庫 內容涵蓋Python&#xff0c;SQL&…

大陸ARS548使用記錄

一、Windows連接上位機 雷達是在深圳路達買的&#xff0c;商家給的資料中首先讓配置網口&#xff0c;但我在使用過程中一直出現無法連接上位機的情況。接下來說說我的見解和理解。 1.1遇到的問題 按要求配置好端口后上位機無連接不到雷達&#xff0c;但wireshark可以正常抓到數…

PyPDF2拆分PDF文件的高級應用:指定拆分方式

本文目錄 前言一、拆分方式選擇1、代碼講解2、實現效果圖3、完整代碼前言 前兩篇文章,分別講解了將使用PyPDF2將PDF文檔分割成為單個頁面、在分割PDF文檔時指定只分割出指定頁面,如果你還沒有看過,然后有需要的話,可以去看一下,我把文章鏈接貼到這里: PyPDF2拆分PDF文件…

Nuxt3 的生命周期和鉤子函數(九)

title: Nuxt3 的生命周期和鉤子函數&#xff08;九&#xff09; date: 2024/7/3 updated: 2024/7/3 author: cmdragon excerpt: 摘要&#xff1a;本文介紹了Nuxt3中與Vite相關的五個生命周期鉤子&#xff0c;包括vite:extend、vite:extendConfig、vite:configResolved、vite…

CVE-2024-6387漏洞預警:盡快升級OpenSSH

OpenSSH維護者發布了安全更新&#xff0c;其中包含一個嚴重的安全漏洞&#xff0c;該漏洞可能導致在基于glibc的Linux系統中使用root權限執行未經身份驗證的遠程代碼。該漏洞的代號為regreSSHion&#xff0c;CVE標識符為CVE-2024-6387。它駐留在OpenSSH服務器組件&#xff08;也…

雙階段目標檢測算法:精確與效率的博弈

雙階段目標檢測算法&#xff1a;精確與效率的博弈 目標檢測是計算機視覺領域的一個核心任務&#xff0c;它涉及在圖像或視頻中識別和定位多個對象。雙階段目標檢測算法是一種特殊的目標檢測方法&#xff0c;它通過兩個階段來提高檢測的準確性。本文將詳細介紹雙階段目標檢測算…

小型語言模型的興起

過去幾年&#xff0c;我們看到人工智能能力呈爆炸式增長&#xff0c;其中很大一部分是由大型語言模型 (LLM) 的進步推動的。GPT-3 等模型包含 1750 億個參數&#xff0c;已經展示了生成類似人類的文本、回答問題、總結文檔等能力。然而&#xff0c;雖然 LLM 的能力令人印象深刻…

純語義,再也不用寫css了

Mojo CSS 是一個下一代的原子級 CSS 框架&#xff0c;由 Mohammad Zamanian 和 Ali Mirabbasi 開發和維護&#xff0c;于2023年發布。這個框架的核心特性在于它能夠自動掃描你的HTML代碼&#xff0c;并根據這些代碼實時生成對應的CSS視覺效果&#xff0c;這意味著開發者無需手動…

(linux系統服務)FTP、NFS以及SAMBA服務

一、FTP服務 1、Linux下ftp客戶端管理工具 ftp、lftp都是Linux下ftp的客戶端管理工具&#xff0c;但是需要獨立安裝 # yum install ftp lftp -y☆ ftp工具 # ftp 10.1.1.10 Connected to 10.1.1.10 (10.1.1.10). 220 (vsFTPd 3.0.2) Name (10.1.1.10:root): 輸入FTP的賬號3…

electron教程(一)創建項目

一、方式① 根據官網描述將electron/electron-quick-start項目克隆下來并啟動 electron/electron-quick-start地址&#xff1a; GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…

代碼隨想錄Day71(圖論Part07)

53.尋寶 題目&#xff1a;53. 尋寶&#xff08;第七期模擬筆試&#xff09; (kamacoder.com) 思路&#xff1a;首先&#xff0c;我不知道怎么存這樣的東西&#xff0c;用三維數組嗎&#xff0c;沒搞懂&#xff0c;果斷放棄 prim算法實現 import java.util.*;class Main {publi…