亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python?中的?BeautifulSoup?網頁使用方法解析

 更新時間:2022年04月24日 14:24:50   作者:autofelix  
這篇文章主要介紹了python?中的?BeautifulSoup?網頁使用方法解析,文章基于python的相關資料展開詳細內容介紹,具有一定的參考價值需要的小伙伴可以參考一下

一、安裝

  • Bautiful Soup 是第三方庫,因此需要單獨下載,下載方式非常簡單
  • 由于 BS4 解析頁面時需要依賴文檔解析器,所以還需要安裝 lxml 作為解析庫
  • Python 也自帶了一個文檔解析庫 html.parser, 但是其解析速度要稍慢于 lxml
pip install bs4
pip install lxml
pip install html5lib

二、html.parser解析

  • html.parser 表示解析文檔時所用的解析器
  • 解析器也可以是 lxml 或者 html5lib
html = '''
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<a href="#" rel="external nofollow"  rel="external nofollow"  class="btn btn-default" data-dismiss="modal">Close</a>
<a href="#" rel="external nofollow"  rel="external nofollow"  class="btn btn-primary">Save</a>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
#prettify()用于格式化輸出html/xml文檔
print(soup.prettify())

三、外部文檔解析

  • 外部文檔,您也可以通過 open 的方式打開讀取
from bs4 import BeautifulSoup
fp = open('html_doc.html', encoding='utf8')
soup = BeautifulSoup(fp, 'lxml')

四、標簽選擇器

  • 標簽(Tag)是組成 HTML 文檔的基本元素
  • 通過標簽名和標簽屬性可以提取出想要的內容
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p class="name nickname user"><b>i am autofelix</b></p>', 'html.parser')
#獲取整個p標簽的html代碼
print(soup.p)
#獲取b標簽
print(soup.p.b)
#獲取p標簽內容,使用NavigableString類中的string、text、get_text()
print(soup.p.text)
#返回一個字典,里面是多有屬性和值
print(soup.p.attrs)
#查看返回的數(shù)據(jù)類型
print(type(soup.p))
#根據(jù)屬性,獲取標簽的屬性值,返回值為列表
print(soup.p['class'])
#給class屬性賦值,此時屬性值由列表轉換為字符串
soup.p['class']=['Web','Site']
print(soup.p)

五、css選擇器

  • 支持大部分的 CSS 選擇器,比如常見的標簽選擇器、類選擇器、id 選擇器,以及層級選擇器
  • 通過向 select 方法中添加選擇器,就可以在 HTML 文檔中搜索到與之對應的內容
html = """
<html>
<head>
<title>零基礎學編程</title>
</head>
<body>
<p class="intro"><b>i am autofelix</b></p>
<p class="nickname">飛兔小哥</p>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="csdn">csdn主頁</a>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="infoq">infoq主頁</a>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="51cto">51cto主頁</a>
<p class="attention">跪求關注 一鍵三連</p>
<p class="introduce">
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="cnblogs">博客園主頁</a>
</p>
</body>
</html>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
#根據(jù)元素標簽查找
print(soup.select('nickname'))
#根據(jù)屬性選擇器查找
print(soup.select('a[href]'))
#根據(jù)類查找
print(soup.select('.attention'))
#后代節(jié)點查找
print(soup.select('html head title'))
#查找兄弟節(jié)點
print(soup.select('p + a'))
#根據(jù)id選擇p標簽的兄弟節(jié)點
print(soup.select('p ~ #csdn'))
#nth-of-type(n)選擇器,用于匹配同類型中的第n個同級兄弟元素
print(soup.select('p ~ a:nth-of-type(1)'))
#查找子節(jié)點
print(soup.select('p > a'))
print(soup.select('.introduce > #cnblogs'))

六、節(jié)點遍歷

  • 可以使用 contents、children 用來遍歷子節(jié)點
  • 可以使用 parent 與 parents 用來遍歷父節(jié)點
  • 可以使用 next_sibling 與 previous_sibling 用來遍歷兄弟節(jié)點 
html = """
<html>
<head>
<title>零基礎學編程</title>
</head>
<body>
<p class="intro"><b>i am autofelix</b></p>
<p class="nickname">飛兔小哥</p>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="csdn">csdn主頁</a>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="infoq">infoq主頁</a>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="51cto">51cto主頁</a>
<p class="attention">跪求關注 一鍵三連</p>
<p class="introduce">
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="cnblogs">博客園主頁</a>
</p>
</body>
</html>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
body_tag=soup.body
print(body_tag)
# 以列表的形式輸出,所有子節(jié)點
print(body_tag.contents)
# children 用來遍歷子節(jié)點
for child in body_tag.children:
print(child)

七、find_all方法

  • 是解析 HTML 文檔的常用方法
  • find_all() 方法用來搜索當前 tag 的所有子節(jié)點
  • 并判斷這些節(jié)點是否符合過濾條件
  • 最后以列表形式將符合條件的內容返回
html = """
<html>
<head>
<title>零基礎學編程</title>
</head>
<body>
<p class="intro"><b>i am autofelix</b></p>
<p class="nickname">飛兔小哥</p>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="csdn">csdn主頁</a>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="infoq">infoq主頁</a>
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="51cto">51cto主頁</a>
<p class="attention">跪求關注 一鍵三連</p>
<p class="introduce">
<a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="cnblogs">博客園主頁</a>
</p>
</body>
</html>
"""
import re
from bs4 import BeautifulSoup
# 創(chuàng)建soup解析對象
soup = BeautifulSoup(html, 'html.parser')
# 查找所有a標簽并返回
print(soup.find_all("a"))
# 查找前兩條a標簽并返回,只返回兩條a標簽
print(soup.find_all("a",limit=2))
# 按照標簽屬性以及屬性值查找
print(soup.find_all("p",class_="nickname"))
print(soup.find_all(id="infoq"))
# 列表行書查找tag標簽
print(soup.find_all(['b','a']))
# 正則表達式匹配id屬性值
print(soup.find_all('a',id=re.compile(r'.\d')))
print(soup.find_all(id=True))
# True可以匹配任何值,下面代碼會查找所有tag,并返回相應的tag名稱
for tag in soup.find_all(True):
print(tag.name,end=" ")
# 輸出所有以b開始的tag標簽
for tag in soup.find_all(re.compile("^b")):
print(tag.name)
# 簡化前寫法
soup.find_all("a")
# 簡化后寫法
soup("a")

八、find方法

html = """
<html>
<head>
  <title>零基礎學編程</title>
</head>
<body>
  <p class="intro"><b>i am autofelix</b></p>
  <p class="nickname">飛兔小哥</p>
  <a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="csdn">csdn主頁</a>
  <a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="infoq">infoq主頁</a>
  <a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="51cto">51cto主頁</a>
  <p class="attention">跪求關注 一鍵三連</p>
  <p class="introduce">
    <a  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="cnblogs">博客園主頁</a>
  </p>
</body>
</html>
"""
import re
from bs4 import BeautifulSoup
# 創(chuàng)建soup解析對象
soup = BeautifulSoup(html, 'html.parser')
# 查找第一個a并直接返回結果
print(soup.find('a'))
# 查找title
print(soup.find('intro'))
# 匹配指定href屬性的a標簽
print(soup.find('a',))
# 根據(jù)屬性值正則匹配
print(soup.find(class_=re.compile('tro')))
# attrs參數(shù)值
print(soup.find(attrs={'class': 'introduce'}))
# 使用 find 時,如果沒有找到查詢標簽會返回 None,而 find_all 方法返回空列表
print(soup.find('aa'))
print(soup.find_all('bb'))
# 簡化寫法
print(soup.head.title)
# 上面代碼等價于
print(soup.find("head").find("title"))

到此這篇關于python 中的 BeautifulSoup 網頁解析的文章就介紹到這了,更多相關BeautifulSoup 網頁內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端功能示例

    Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端功能示例

    這篇文章主要介紹了Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端功能,結合實例形式分析了Python基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端數(shù)據(jù)發(fā)送與接收相關操作技巧,需要的朋友可以參考下
    2018-03-03
  • 一篇文章帶你了解python標準庫--os模塊

    一篇文章帶你了解python標準庫--os模塊

    在本篇內容里小編給大家整理的是關于Python中os模塊及用法相關知識點,有興趣的朋友們可以學習下,希望能給你帶來幫助
    2021-08-08
  • python里使用正則表達式的組嵌套實例詳解

    python里使用正則表達式的組嵌套實例詳解

    這篇文章主要介紹了python里使用正則表達式的組嵌套實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • python爬蟲學習筆記--BeautifulSoup4庫的使用詳解

    python爬蟲學習筆記--BeautifulSoup4庫的使用詳解

    這篇文章主要介紹了Python中使用Beautiful Soup庫的超詳細教程,示例代碼基于Python2.x版本,極力推薦!需要的朋友可以參考下
    2021-08-08
  • 基于python SMTP實現(xiàn)自動發(fā)送郵件教程解析

    基于python SMTP實現(xiàn)自動發(fā)送郵件教程解析

    這篇文章主要介紹了基于python實現(xiàn)自動發(fā)送郵件教程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python曲線擬合詳解

    Python曲線擬合詳解

    這篇文章主要介紹了關于python曲線擬合,scipy.optimize中,curve_fit函數(shù)可調用非線性最小二乘法進行函數(shù)擬合,文中有詳細的代碼作為參考,需要的朋友可以閱讀參考
    2023-04-04
  • python基礎之并發(fā)編程(一)

    python基礎之并發(fā)編程(一)

    這篇文章主要介紹了詳解python的并發(fā)編程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10
  • 淺談Scrapy網絡爬蟲框架的工作原理和數(shù)據(jù)采集

    淺談Scrapy網絡爬蟲框架的工作原理和數(shù)據(jù)采集

    在python爬蟲中:requests + selenium 可以解決目前90%的爬蟲需求,難道scrapy 是解決剩下的10%的嗎?顯然不是。scrapy框架是為了讓我們的爬蟲更強大、更高效。接下來我們一起學習一下它吧。
    2019-02-02
  • pytorch和tensorflow計算Flops和params的詳細過程

    pytorch和tensorflow計算Flops和params的詳細過程

    這篇文章主要介紹了pytorch和tensorflow計算Flops和params,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Django中auth模塊用戶認證的使用

    Django中auth模塊用戶認證的使用

    本文主要介紹了Django中auth模塊用戶認證的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03

最新評論