Python爬蟲 XPath 三方庫lxml

前言

XPath是Python爬蟲最重要的過濾原始數據的手段之一,是爬蟲最核心的技術

是專業抓取HTML頁面而生的,基本上只用于抓取HTML頁面使用

目錄

安裝支持XPath三方庫lxml

XPath代碼入門示例

XPath表達式語法

在源代碼上面直接獲取XPath


安裝支持XPath三方庫lxml

pip install?lxml -i?https://pypi.tuna.tsinghua.edu.cn/simple

XPath代碼入門示例

from lxml import etreedata = "請求網頁返回的源代碼HTML數據"#使用 lxml 庫中的 etree 模塊使用XPath解析data數據
datas = etree.HTML(data)#返回的數據一般都是數據,即使是一個數據也是一個數組形式
res = datas.xpath('xpath表達式')#res這個數組里面的數據就是我們過濾好的目標數據
print(res)

XPath表達式語法

編寫好的XPath表達式一般我們填入xpath()這個方法的適合習慣單引號,因為我們里面準備填寫HTML里面的屬性的時候我們習慣給雙引號

XPath語法是按HTML頁面的層級標簽關系進行匹配的

?/? ? ? ? ? ? ? ? 從根節點開始的絕對路徑

//? ? ? ? ? ? ? ? 匹配任意層級的節點

./? ? ? ? ? ? ? ? 表示從當前節點開始的相對路徑

HTML標簽后面是可以跟坐標的,坐標是從1開始

? ? ? ? 如 /html/body/p[1]/text()? ? ?

????????????????就是使用絕對路徑,從html標簽根路徑開始,html標簽下的body標簽下的第一個p標簽的內容text()

? ? ? ? 如//p[1]

? ? ? ? ? ? ? ? 就是使用模糊匹配,匹配到HTML文件中的所有第一個P標簽的內容text()

標簽[@屬性名="屬性值"]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?可以精確匹配具體的標簽,確定好屬性名和屬性值的唯一性

標簽[contains(@屬性名,"屬性值")]? ? ? ? ? ? ? ? ? ? ? ?對屬性值進行模糊匹配,可以匹配多個標簽

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

/@屬性名? ? ? ? ? ? 取這個標簽該屬性值

/text()? ? ? ? ? ? ? ? ? 取這個標簽的內容

在源代碼上面直接獲取XPath

不推薦,不美觀而且使用起來不夠靈活

Python請求的HTML有可能是懶加載的,導致請求的HTML字符串與頁面源代碼不符,導致使用不了

所以還是盡量自己可以按照XPath表達式語法自己編寫,實際問題實際分析

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

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

相關文章

深度學習洪水推演:Python融合多源衛星數據可視化南方暴雨災情

目錄1. 引言:多源衛星融合分析的突破性價值2. 多模態融合架構設計3. 雙流程對比分析3.1 單源 vs 多源融合分析3.2 洪水推演核心流程4. 核心代碼實現4.1 多源數據融合處理(Python)4.2 時空洪水推演模型(PyTorch)4.3 三維…

「日拱一碼」016 深度學習常用庫——PyTorch

目錄 張量操作 創建張量: torch.tensor() :直接從數據創建張量 torch.zeros() :創建全零張量 torch.ones() :創建全一張量 torch.randn() :創建正態分布隨機張量 torch.arange() :創建等差序列張量 …

【Qt】QStringLiteral 介紹

QStringLiteral 介紹 QStringLiteral 是 Qt 框架中提供的一個宏,用于在編譯時從字符串字面量創建 QString 對象,具有高效和零內存分配的特點。 主要特點 編譯時轉換:將字符串字面量在編譯時轉換為 QString 數據,而不是運行時。…

UI前端與數字孿生結合實踐探索:智慧物流的貨物追蹤與配送優化

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言:數字孿生重構智慧物流的技術范式在物流行業數字化轉型的浪潮中&#xff0…

Java創建型模式---工廠模式

工廠模式基礎概念 工廠模式是一種創建型設計模式,其核心思想是將對象的創建和使用分離。通過使用工廠模式,可以將對象創建邏輯集中管理,提高代碼的可維護性和可擴展性。在 Java 中,工廠模式主要分為三種類型: 簡單工…

分布式定時任務:xxl-job

基礎 XXL - Job采用的是調度中心(Scheduler)與執行器(Executor)分離的架構設計,這種設計帶來了諸多優勢,比如高可用性、可擴展性以及便于分布式部署等。 1. 調度中心(XXL - Job Admin&#xf…

易語言實現釘釘PC端高頻率鏈接批量打開系統

易語言實現釘釘PC端高頻率鏈接批量打開系統 一、需求分析與技術方案 核心需求: 在釘釘PC端私聊消息中嵌入特殊格式鏈接用戶點擊后通過自定義協議喚醒本地程序支持每分鐘處理10萬次請求的批量操作實現鏈接的批量生成和管理技術方案: #mermaid-svg-AYoMWYQQf71dlyEF {font-fa…

MyBatis如何實現動態數據源切換?

大家好,我是鋒哥。今天分享關于【MyBatis如何實現動態數據源切換?】面試題。希望對大家有幫助; MyBatis如何實現動態數據源切換? 超硬核AI學習資料,現在永久免費了! 在MyBatis中實現動態數據源切換&#…

實踐篇:14-構建 Node.js 應用程序鏡像

背景介紹 Node.js是一個基于 Chrome V8 引擎的 JavaScript 運行時環境,以其事件驅動、非阻塞 I/O 模型而聞名,廣泛用于構建后端服務和前端應用。 Node.js 的特點使其非常適合容器化部署: 輕量級運行時:相比傳統后端語言&#xf…

Spring Cloud 微服務(鏈路追蹤與日志聚合)

📌 摘要 在微服務架構中,隨著服務數量的增加和調用關系的復雜化,傳統的日志記錄方式已經無法滿足對系統運行狀態的全面掌控。如何快速定位異常請求、分析服務調用耗時、追蹤完整鏈路成為運維和開發人員面臨的核心挑戰。 為此,Sp…

PADS交互式布局

PADS的交互式布局通過原理圖與PCB的雙向聯動大幅提升設計效率。在原理圖中框選電路模塊時,PCB視圖將自動高亮對應元件組并生成可移動簇,拖動時保持模塊內部相對位置不變。布局過程中啟用實時推擠功能(Placement Shoving)&#xff…

類圖+案例+代碼詳解:軟件設計模式----原型模式

5、原型模式 通過復制現有對象來創建新對象,避免從零開始構建,就像 “復印文件” 一樣。 克隆的核心是復用現有對象狀態 用 克隆熊貓 舉例,秒懂原理 假設你有一只熊貓對象(屬性:名字、年齡、毛色)&#…

Python-FAQ-__name__、__main__

1 需求 2 接口 3 示例 4 參考資料 在 Python 中,像 __name__ 這樣的雙下劃線屬性(也稱為 "dunder" 屬性,即 "double underscore" 的縮寫)是 Python 的特殊屬性或方法,它們為類、對象或模塊提供了…

Adobe高階技巧與設計師創意思維的進階指南

作為一名在全球設計圈摸爬滾打了十年的職業設計師,我深知創意與技術的結合是點燃靈感的火花。憑借英國Parvis School of Economics and Music大學提供的Adobe正版教育訂閱,我得以在設計之路上不斷探索與突破。今天,我想以輕松實用的口吻&…

音視頻會議服務搭建(設計方案-Go服務端API業務邏輯流程圖)-04

前言 這一篇是 關于 Go服務端相關的音視頻會議的接口API業務邏輯流程圖肯定是不能完全復用到你的項目中去的,但是希望對你有一些參考性的幫助嗯,我也是在不斷的進行完善和優化,并不是最終的結構,先定好大方向,然后不斷…

C++ Qt Widget繪圖畫布縮放與平移:實現CAD級交互體驗

在圖形應用程序開發中,實現流暢的縮放和平移功能是創建專業級繪圖工具的基礎。本文將深入探討如何在Qt Widget中實現CAD級別的交互體驗,包括視圖變換、坐標系統管理以及交互功能實現。核心概念:視圖變換與坐標系統 在圖形應用中,我…

Paimon 位圖索引解析:高效等值查詢的秘密( Bit-Sliced Index)

BitmapFileIndexBitmapFileIndex 這個類 是 Paimon 中一個非常重要的索引類型,它使用位圖(Bitmap)來精確定位數據,尤其擅長處理低基數(low-cardinality)列的等值查詢。BitmapFileIndex 實現了 FileIndexer …

S7-1200 CPU 與 S7-200 CPU S7通信(S7-1200 作為服務器

7-1200 CPU 與 S7-200 CPU S7通信(S7-1200 作為服務器) S7-1200 CPU 與 S7-200 CPU 之間的通信只能通過 S7 通信來實現,因為 S7-200 的以太網模塊只支持S7 通信。當S7-200作為客戶端,S7-1200作為服務器,需在客戶端單邊…

pyspark大規模數據加解密優化實踐

假如有1億行數據 方法1 spark udf解密 from pyspark.sql import SparkSession import pyspark.sql.functions as F from pyDes import * import binasciisparkSparkSession.builder.getOrCreate()def dec_fun(text):key triple_des(b"HHHHHHHHHHHHHHHHHHHHHHHH", CB…

華為云Flexus+DeepSeek征文|華為云ECS與CCE:從介紹到架構部署·僅需要此文足矣

前引:當今的企業面臨著前所未有的技術挑戰:如何構建既安全又高效、既靈活又可靠的云服務架構?如何有效整合人工智能技術,打造智能化的運維和服務體系?這些問題的答案,正在悄然改變著企業級IT基礎設施的生態…