python基礎:數據解析BeatuifulSoup,不需要考慮前端形式的一種獲取元素的方法

1.beatuifulSoup 基本用法

beautifulSoup(簡稱bs4)是python的一個第三方庫,用于解析html和xml文檔中提取數據的python庫。它能夠將復雜的文檔轉化為樹形結構,方便快速定位和提取所需數據以及查找和修改,常常與爬蟲框架如requests結合使用:
一下是bs4的核心功能的介紹:

  • 四大對象類型
    tag:html、xml中的標簽,如div和a標簽
    NavigableString:標簽內的文本內容
    BeautifulSoup:表示整個文檔樹
    Comment:Html中的注釋部分
  • 解析器對比
解析器優勢劣勢
html內置無需安裝速度比較慢,容錯性一般
lxml速度快容錯性強需要額外安裝依賴
html5lib遵循html5標準容錯性最強速度最慢,需要額外安裝
  • 安裝與導入
    命令:
 pip install beautifulsoup4
執行結果![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/85154572e27b485b903f9965bea34c6a.png)

還需要安裝解析器(如lxml或者html.parse)
命令:

pip install lxml

導包使用

  • 使用BeautifulSoup流程
    ①導入BeautifulSoup模塊
    ②創建BeautifulSoup對象
    ③使用標簽名稱查找元素
    ④使用css選擇器查找元素
    ⑤獲取元素的文本內容
  • BeautifulSoup基本用法
    ①初始化與解析
    a. 字符串解析
from bs4 import BeautifulSoup# 字符串解析,相當于把需要解析的內容,不需要放到html中,直接放在str中
html_doc = '''
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>python</title></head><body><div class="name" id="title"><h1> python 學習</h1><p> 爬蟲 </p><a href="https://www.python.org/"></a></div></body>
</html>
'''
# 設置解析器進行解析
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)
	b. 文件解析(從html文件中進行解析)
from bs4 import BeautifulSoup# 文件解析
with open('bs.html', 'r', encoding='utf8') as f:soup = BeautifulSoup(f, 'html.parser')print(soup)
	c. URL獲取HTML并解析(使用爬蟲腳本發送請求的時候就已經可以進行解析了)
from bs4 import BeautifulSoup
import requests# url獲取html并解析
url = 'http://www.baidu.com'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 ''Safari/537.39996'
}
response = requests.get(url= url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
print(soup)

②訪問元素
例如:獲取字符串中的某個標簽,通過標簽名來進行訪問

from bs4 import BeautifulSoup# 字符串解析,相當于把需要解析的內容,不需要放到html中,直接放在str中
html_doc = '''
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>python</title></head><body><div class="name" id="title"><h1> python 學習</h1><p> 爬蟲 </p><a href="https://www.python.org/">路徑</a></div></body>
</html>
'''
# 設置解析器進行解析
soup = BeautifulSoup(html_doc, 'html.parser')
# 1.直接訪問子標簽
h1_data = soup.h1
p_data = soup.p
div_data = soup.div
print(soup)
print(h1_data)
print(p_data)
print(div_data)
# 2.訪問標簽的標簽名、標簽值
# (先獲取h1標簽)
title = soup.h1
# 獲取標簽名
name= title.name
print(name)
# 獲取標簽值
str = title.string
print(str)
# 獲取某個父標簽下的某個子標簽下的內容(嵌套訪問:父親找兒子的某個內容)
print(soup.body.div.a.string)

2. 高級查找方法

2.1 查找元素

2.2 提取文本和屬性

2.3 find()和findAll()

2.4 CSS選擇器(推薦使用)

3. 導航樹操作(處理復雜結構)

4. 新浪往案例實戰

5. jsonpath提取數據

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

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

相關文章

Ubuntu共享文件夾權限設置

在Ubuntu中設置共享文件夾的權限&#xff08;只讀、讀寫、無權限&#xff09;&#xff0c;主要通過兩種方式實現&#xff1a;?文件系統權限?和?Samba共享配置?。以下是詳細步驟&#xff1a;?一、文件系統權限設置&#xff08;基礎權限&#xff09;?1. ?修改文件夾所有權…

小程序點擊菜單欄實現樣式動態切換

小程序點擊菜單欄背景樣式動態切換 前言&#xff1a;今天做一個小程序項目&#xff0c;要做一個菜單欄動態切換的功能&#xff0c;因為這種需求很常見&#xff0c;這次干脆記錄一下&#xff0c;幫助別人的同時&#xff0c;自己下次也可以直接照搬使用。 效果截圖如下&#xff1…

掌握工程化固件燒錄,開啟你的技術進階之路-FPGA ISE(xilinx)

1、電腦需先行安裝ISE14.7。若已完成安裝&#xff0c;此步驟可略過&#xff1b;若尚未安裝&#xff0c;在后續章節會介紹如何安裝ISE&#xff0c;由于ISE14.7的安裝程序體量龐大&#xff0c;可借助U盤進行傳輸。同時&#xff0c;電腦需預留至少30G的存儲空間以用于安裝該程序。…

Android 之 面試八股文

?1.Activity生命周期????問題??&#xff1a;描述Activity從啟動到銷毀的完整生命周期方法&#xff0c;并說明onSaveInstanceState()的調用時機。??參考答案??&#xff1a;onCreate()→ onStart()→ onResume()&#xff08;活躍狀態&#xff09; → onPause()&#x…

暴力解決MySQL連接失敗

本文涉及清空root密碼完全重置MySQL權限徹底卸載并重裝MySQL請務必在測試/本地環境操作&#xff0c;生產環境慎用&#xff01;場景Spring Boot項目連接MySQL一直報Access denied for user rootlocalhost&#xff0c;改密碼、換驅動都沒用&#xff1f;步驟1&#xff1a;完全重置…

前端開發:CSS(1)—— 什么是CSS?

本文用于記錄前端開發的學習過程。前面我們已經學習了html的編寫&#xff0c;知道了Web開發的一些最基本的知識&#xff1b;在html的學習過程中&#xff0c;我們提到關于樣式的設計和修改常需要使用CSS來實現。那么CSS到底是什么東西呢&#xff1f;它又如何來設計樣式呢&#x…

數據結構(4)—棧和隊列

一、概念1.棧只允許在棧頂位置入棧和出棧元素&#xff0c;鏈表可以在任意位置插入和刪除元素&#xff0c;棧和隊列只允許在指定位置插入和刪除元素2.鏈表、棧和隊列都是一種線性結構&#xff08;一對一&#xff09;&#xff0c;棧和隊列是一種特殊的表狀結構二、棧1.基礎概念先…

vue2.如何給一個頁面設置動態的name。不同路由使用一樣的組件。頁面不刷新怎么辦?

page里面detail.vue export default { name: detail, } vue2里面.vue的頁面都會設置一個name&#xff0c;這個通常是寫死的。不能在頁面動態設置的。頁面刷新緩存通常都是根據這個name來判斷的。如果name寫死。我幾個頁面都通用這一個頁面的話&#xff0c;他也不刷新頁面啊。 比…

浮動IP(Floating IP)的刪除通常需要滿足什么條件

浮動IP&#xff08;Floating IP&#xff09;的刪除通常需要滿足什么條件在云計算或網絡環境中&#xff0c;浮動IP&#xff08;Floating IP&#xff09;的刪除通常需要滿足一定的條件&#xff0c;以確保操作不會影響現有業務或導致網絡中斷。以下是常見的可刪除浮動IP的場景和條…

機器學習之隨機森林(Random Forest)實戰案例

一、算法基礎 首先&#xff0c;來介紹一下算法的基礎語法 class sklearn.ensemble.RandomForestClassifier(\ n_estimators’warn’,\ criterion’gini’,\max_depthNone, \ min_samples_split2,\ min_samples_leaf1, \ min_weight_fraction_leaf0.0, \ max_features’auto’…

《C語言》指針練習題--1

《C語言》指針練習題–1 1. 交換兩個整數的值 題目描述&#xff1a; 編寫一個C程序&#xff0c;定義一個函數swap&#xff0c;使用指針參數交換兩個整數的值。在main函數中調用該函數并輸出交換后的結果。 解題思路&#xff1a; 為了交換兩個整數的值&#xff0c;可以通過指針傳…

應急響應整理

目錄 windows下 1. 檢查賬號安全 利用注冊表實現用戶隱藏 粘滯鍵后門 2 檢查異常端口、進程 3. 檢查啟動項、計劃任務、服務 4. 日志分析-Windows 常見事件類型、登錄類型 Linux下 1. 賬號安全 2. 歷史命令 3. 檢查異常端口 4. 檢查異常進程 5. 檢查開機啟動項 …

一文讀懂 C# 中的 Bitmap

一文讀懂 C# 中的 Bitmap 一、Bitmap 到底是什么? 二、推薦使用場景 三、實戰 Demo 基礎用法:加載、創建和保存 進階用法 縮放圖片 裁剪圖片 顏色調整(反色處理) 四、核心方法和屬性說明 常用函數 常用屬性 五、避坑指南、注意事項 六、總結與決策 一文讀懂 C# 中的 Bitmap…

預約時間組件

效果圖如何使用<template><view><button click"pickerTime(0)">預約時間0</button><button click"pickerTime(1)">預約時間1</button><button click"pickerTime(2)">預約時間2</button><but…

Android 開發 - Service、Camera、Layout Design 自定義設備類型和大小

一、Service 啟動 1、基本介紹 &#xff08;1&#xff09;startService()其他組件通過調用 startService() 啟動 Service 后&#xff0c;Service 可在后臺無限期運行&#xff0c;即使啟動 Service 的組件被銷毀也不受影響&#xff0c;一般情況下 startService() 是執行單一操作…

Qwen Image:開源中文渲染SOTA,重塑文生圖技術邊界

1. Qwen Image的技術定位與行業痛點1.1 文本渲染&#xff1a;文生圖領域的長期技術瓶頸傳統文生圖模型在圖像美學與真實感優化上已取得顯著進展&#xff0c;但多語言文本渲染始終是行業難以突破的瓶頸。主流模型在處理中文等非字母語言時&#xff0c;常出現字符斷裂、布局錯位、…

Docker入門教程:在騰訊云輕量服務器上部署你的第一個容器化應用 (2025)

更多云服務器知識&#xff0c;盡在hostol.com“在我電腦上明明是好的啊&#xff01;”這句話&#xff0c;是不是堪稱程序員“甩鍋”排行榜第一名的金句&#xff1f;當你辛辛苦苦開發完一個應用&#xff0c;把它交給同事或者部署到服務器上時&#xff0c;卻發現因為它依賴的某個…

DevOps平臺結合Gradle實現打包流水線

在現代軟件開發中,持續集成與持續交付(CI/CD)已成為團隊提速、降本增效的核心實踐。Gradle作為強大的自動化構建工具,常被用于Android與Java項目的構建打包任務。而將Gradle集成進企業的DevOps平臺中,不僅可以標準化構建過程,還能自動化打包、測試、發布的全流程,大幅提…

Node.js 操作 MySQL

目錄 一、什么是 MySQL&#xff1f; 二、MySQL 的功能概覽 三、MySQL 的安裝與啟動 安裝 MySQL 啟動服務 四、Node.js 如何連接 MySQL&#xff1f; 使用 mysql2 模塊&#xff08;推薦&#xff09; 建立連接 五、創建數據表和插入數據&#xff08;SQL 初始化&#xff09…

解鎖高效敏捷:2025年Scrum項目管理工具的核心應用解析

一、為什么Scrum團隊需要專業項目管理工具&#xff1f;在敏捷開發實踐中&#xff0c;Scrum框架雖然提供了基礎的工作流程&#xff0c;但缺乏對任務細粒度管理的支持。傳統白板或簡單看板工具往往無法滿足現代敏捷團隊的需求&#xff0c;導致&#xff1a;沖刺規劃混亂&#xff1…