91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python爬蟲怎么使用BeautifulSoup庫

發布時間:2021-11-19 15:29:45 來源:億速云 閱讀:127 作者:iii 欄目:編程語言

本篇內容介紹了“python爬蟲怎么使用BeautifulSoup庫”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

  BeautiSoup類的基本元素及用bs4遍歷HTML基本方法

  1,BeautifulSoup類的基本元素

  有5種基本元素:

  Tag: 標簽,最基本的信息組織單元, .

  Name: 標簽名字, ..name :返回一個字符串

  Attributes: 標簽的屬性, ..attrs :返回一個字典類型

  NavigableString:標簽中的字符串, ..string :返回一個字符串

  Comment: 標簽中的注釋信息,會在 ..string中獲得。

  比如現在有一個HTML文檔:

  The demo python introduces several python courses.

  Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:

  Basic Python

  and

  Advanced Python.

  This is not a Comment.

  我們對此文檔用BS類的基本元素進行應用:

  先煲一鍋湯:>>> soup = BeautifulSoup(html, "html.parser")

  用 .獲得一個標簽的全部信息:

  如:>>> soup.p

python爬蟲怎么使用BeautifulSoup庫

  用.name獲得這個標簽的名字:

  如:>>> p.name

python爬蟲怎么使用BeautifulSoup庫

  Tag屬性還有另外一個重要的用法, 就是當我們對一個標簽內的子節點進行遍歷時,可能會有不是標簽的節點,比如’\n’等,此時可利用bs4庫提供的bs4.element.Tag屬性來進行甄別。

  用到 isinstance()方法。比如:isinstance(soup.a, bs4.element.Tag)

python爬蟲怎么使用BeautifulSoup庫

  用.attrs獲得這個標簽的屬性:

  如>>> soup.a.attrs

python爬蟲怎么使用BeautifulSoup庫

  可以對a標簽的具體屬性進行獲得:>>> soup.a['href']

python爬蟲怎么使用BeautifulSoup庫

  用.string獲得這個標簽中的字符串信息:

  如:>>> soup.p.string:

python爬蟲怎么使用BeautifulSoup庫

  我們看到.string可以跨越標簽,直接獲得標簽內的字符串。

  但是: 當外層標簽內含有多個平行的內層標簽時,就不行了:

  比如:鄭州人流醫院哪家好 http://m.zzzy120.com/

  此p標簽內有多個平行的a標簽,直接用p.string返回為None

  最后,說說Comment屬性

  可用>>> soup.b.string來獲得注釋的信息:

  二者類型是不同的,因此可用bs4庫的 isinstance(, bs4.element.Comment)來過濾注釋信息,或者獲得注釋信息。

  2,用BeautifulSoup遍歷HTML的方式

  1,下行遍歷:

  3個屬性:

  1,.contents : 子節點的列表,將所有兒子節點存入列表(還包括所有的\n)

  2,.children : 子節點的迭代類型,與.contents類似,用于循環遍歷兒子節點。

  3, .descendants : 包含所有的子孫節點。與children一樣,只能用于迭代。

  2,上行遍歷:

  2個屬性:

  1,.parent : 節點的父親標簽

  2,.parents: 節點先輩的迭代類型,用于循環遍歷先輩節點(所有的先輩)。

  3,平行遍歷:

  4個平行遍歷屬性:(需要發生在同一個父親節點下的各節點間。)

  1,.next_sibling : 返回按照HTML文本順序的下一個平行節點標簽。

  2,.previous_sibling: 返回。。的上一個平行節點標簽。

  3,.next_siblings: 迭代類型, 返回按照順序的所有平行節點標簽。

  4,.previous_sibings:迭代類型 。。。。。。。。。

  3,BeautifulSoup的格式化輸出與編碼:

  prettify()函數:能夠為HTML標簽,文本增加換行符,

  1,世界上的所有信息都可以用3中標記形式進行標記。

  XML 格式: 類似于HTML,標簽形式。

  JSON: 有類型的鍵值對 key:value 如:

  "name" : "北京" -----;一個鍵值對

  "name" : ["hello", "hello"] -----: 一個鍵對應多個值1

  "name" : {"subkey" : "subvalue"} -----:一個鍵值對作為一個值對應于一個鍵

  YAML: 無類型的鍵值對 : key : value

  name : 北京

  name :

  -newName : 北京

  -newName : 上海 (并列)

  name :

  newname : hello (嵌套)

  比較::

  XML用<>標記 : 擴展性好,但是繁瑣。 Internet上的信息交互與傳遞,多用XML。

  JSON用“” : 信息有類型,適合程序處理(js),較XML整潔。(無法注釋) 用于移動應用云端和節點的信息通信。用在對程序接口處處理。

  YAML用縮進 : 信息無類型, 文本信息比例最高,可讀性好。各類系統的配置文件,有注釋易讀。

  2,信息的提取方式

  1,完整解析信息的標記形式,再提取關鍵信息。

  2,無視標記形式,直接搜索關鍵信息。

  3,融合方法。

  如:提取HTML中所有的URL標簽。

  思路):

  1,搜索所有的標簽

  2,解析標簽格式,提取href后的鏈接內容。

  3,find_all()方法

  最常用的查找方法

  <>.find_all(name, attrs, recursive, string, **kwargs)

  返回一個列表類型,存儲查找的結果.

  使用方法:

  可單獨指定name,attrs, recursive, string等

  標簽名, 屬性(或字典形式的鍵值對), 默認為對子孫節點搜索, 字符串。

  (..) 等價于 .find_all(..)

  soup(..) 等價于 soup.find_all(..)

  <>.find()搜索只返回一個結果,字符串結果。

“python爬蟲怎么使用BeautifulSoup庫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵武市| 深泽县| 米林县| 胶州市| 志丹县| 农安县| 奈曼旗| 衡山县| 新昌县| 休宁县| 凉山| 澄江县| 上杭县| 济宁市| 都江堰市| 富蕴县| 青海省| 开封市| 太谷县| 阿克| 翁源县| 囊谦县| 兴化市| 深圳市| 峨边| 二手房| 邓州市| 刚察县| 化德县| 卓资县| 奉化市| 东宁县| 开原市| 葫芦岛市| 平阳县| 仙居县| 方正县| 福安市| 宿松县| 同德县| 扬州市|