信息提取的一般方法
import requests
import re # 正則表達(dá)式庫(kù)
from bs4 import BeautifulSoup
url = "https://python123.io/ws/demo.html"
r = requests.get(url, timeout=30)
r.encoding = r.apparent_encoding
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
# find_all:name、attrs、recursive、string、其他參數(shù)
# 標(biāo)簽名、標(biāo)簽屬性值、是否檢索子孫節(jié)點(diǎn)默認(rèn)True、標(biāo)簽中字符串
# name
# 獲取全部鏈接
for link in soup.find_all('a'):print(link.get("href"))
# 獲取a和p標(biāo)簽內(nèi)容
print("獲取a和p標(biāo)簽內(nèi)容")
print(soup.find_all(['a', 'p'])) # 列表形式
for s in soup.find_all(['a', 'p']):print(s)
# 獲取soup的全部標(biāo)簽
print("全部標(biāo)簽名稱")
for tag in soup.find_all(True):print(tag.name)
print("使用正則表達(dá)式查找以b開(kāi)頭的標(biāo)簽名稱")
for tag in soup.find_all(re.compile('b')):print(tag.name)
# attrs
print("獲取p標(biāo)簽中屬性為course的內(nèi)容")
print(soup.find_all('p', 'course'))
print("查找id為link1的內(nèi)容")
print(soup.find_all(id='link1')) # 若沒(méi)有則返回空列表
print("使用正則表達(dá)式查找id以link開(kāi)頭的標(biāo)簽內(nèi)容")
print(soup.find_all(id=re.compile("link")))
# recursive(遞歸的)
print(soup.find_all('a'))
print("測(cè)試recursive:")
print(soup.find_all('a', recursive=False)) # 為空,說(shuō)明soup兒子節(jié)點(diǎn)無(wú)a標(biāo)簽
print(soup.find_all('a', recursive=True))
# string
print("查找Basic Python")
print(soup.find_all(string="Basic Python")) # 沒(méi)有輸出空列表
print("使用正則表達(dá)式查找包含Python的內(nèi)容:")
print(soup.find_all(string=re.compile("Python"))) # 區(qū)分大小寫(xiě)
?
總結(jié)