
點擊上方藍字關注"程序員Bob"呀~css

必定要愛着點什麼,恰似草木對光陰的鐘情。html
——汪曾祺python

上次小編談到了對網頁信息內容的爬取,那麼在具體的編程體系中該如何實現呢?程序員
1.方法介紹web
<>.find_all(name,attrs,recursive,string,**kwargs)
2.相關參數介紹
編程
第一個參數是name:對HTML中標籤名稱的檢索字符串。swift
好比咱們在http://python123.io/ws/demo.html這個簡單的網頁中找到與a和b標籤相關的內容。微信
首先,打開網頁右鍵找到檢查,而後能夠看到與a和b標籤相關的內容:app
下一步,咱們決定用上面BeautifulSoup庫提供的方法開始查找及其準備:框架
-
引用相關庫。
-
用get方法構造一個請求,獲取HTML網頁。 -
將網頁對應的內容儲存到demo變量中,並對HTML網頁進行解析。 -
隨後便使用查找語句對標籤的查找。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(demo)print(soup.find_all('a'))print(soup.find_all(['a','b']))
若是咱們要查找的網頁是一個較大的網站,所涉及的標籤內容不少,那麼該如何查找呢?
To:加個for循環,便可打印出全部的標籤信息。
相關代碼以下:
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")for tag in soup.find_all(True): print(tag.name)
第二個參數是attrs:對標籤屬性值的檢索字符串,可標註屬性檢索。
查找p標籤包含course的屬性值。
查找id=link1的屬性值。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.find_all('p','course'))#查找p標籤包含course的屬性值print(soup.find_all(id='link1'))#查找id=link1的屬性值
第三個參數:recursive:是否對子孫標籤所有檢索,默認True。
1.對a標籤是否進行子孫標籤所有檢索。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.find_all('a'))print(soup.find_all('a',recursive=False))#先後對比
第四個參數是string:<>...</>中字符串區域的檢索字符串。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup)print(soup.find_all(string="Basic Python"))#先後對比
3.與find_all相關的方法
<tag>(...) 等價於 <tag>.find_all(...)soup(...)等價於 soup.find_all(...)
<>.find():搜索且只返回一個結果,字符串類型。
<>.find_parents():在先輩節點中搜索,返回列表類型。
<>.find_parent():在先輩節點中返回一個結果,字符串類型。
<>.find_next_siblings():在後續平行節點中搜索,返回列表類型。
<>.find_next_silbling():在後續平行節點中返回一個結果,字符串類型。
<>.find_previous_siblings():在前序平行節點中搜索,返回列表類型。
<>.find_previous_sibling():在前序平行節點中返回一個結果,字符串類型。
爲你,千千萬萬遍.
往期推薦:
2021-02-19

2021-02-08

2021-02-03


本文分享自微信公衆號 - 程序員Bob(gh_8a1a1530d0bf)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。