1. 程式人生 > >Python中的BS4模組

Python中的BS4模組

Python中的bs4模組

bs4 模組的 BeautifulSoup 可以用來爬取html頁面的內容,配合requests庫可以用於簡單的爬蟲。

1. 獲取標籤內容

# 1. 獲取標籤內容
from bs4 import  BeautifulSoup

# 構造物件
soup = BeautifulSoup(open('villa.html'), 'html.parser')
# 獲取標籤, 預設獲取找到的第一個符合的內容
print(soup.title)
print(type(soup.title))
print(soup.p)

在這裡插入圖片描述

2. 獲取標籤的屬性

from bs4 import  BeautifulSoup

# 構造物件
soup = BeautifulSoup(open('villa.html'), 'html.parser')
# #獲取標籤的屬性
print(soup.p.attrs)
# 獲取標籤指定屬性的內容
print(soup.p['id'])
print(soup.p['class'])
print(soup.p['style'])
# 對屬性進行修改
soup.p['id'] = 'modifyid'
print(soup.p)
print(type(soup.p))

在這裡插入圖片描述

3. 獲取標籤的文字內容

#獲取標籤的文字內容
from bs4 import  BeautifulSoup

# 構造物件
soup = BeautifulSoup(open('villa.html'), 'html.parser')
print(dir(soup.title))
print(soup.title.text)
print(soup.title.string)
print(soup.title.name)
print(soup.head.title.string)

在這裡插入圖片描述

4. 操作子節點

# 構造物件
soup = BeautifulSoup(open('villa.html'), 'html.parser')
print(soup.head.contents)
print(soup.head.children)
for el in soup.head.children:
    print('--->', el)

在這裡插入圖片描述

5. 面向物件的匹配

# # 查詢指定的標籤內容(指定的標籤)
res1 = soup.find_all('p')
print(res1)

# # 查詢指定的標籤內容(指定的標籤)--與正則的使用
res2 = soup.find_all(re.compile(r'd+'))
print(res2)

# # 對於正則表示式進行編譯, 提高查詢速率;
pattern = r'd.+'
pattern = re.compile(pattern)
print(re.findall(pattern, 'dog hello d'))



# 構造物件
soup = BeautifulSoup(open('villa.html'), 'html.parser')

# 詳細查詢標籤
print(soup.find_all('p', id='test2'))
print(soup.find_all('p', id=re.compile(r'test\d{1}')))
print(soup.find_all('p', class_="class1"))
print(soup.find_all('p', class_=re.compile(r'class\d{1}')))
# 查詢多個標籤
print(soup.find_all(['p', 'div']))
print(soup.find_all([re.compile('^d'), re.compile('p')]))


# 內容的匹配
print(soup.find_all(text='文章標題'))
print(soup.find_all(text=re.compile('標題')))
print(soup.find_all(text=[re.compile('標題'), 'Title']))

在這裡插入圖片描述

6.CSS匹配


import re
from bs4 import  BeautifulSoup
# 構造物件
soup = BeautifulSoup(open('villa.html'), 'html.parser')
# CSS常見選擇器: 標籤選擇器(div), 類選擇器(.class1), id選擇器(#idname), 屬性選擇器(p[type="text"])
# 標籤選擇器(div)
res1 = soup.select("p")
print(res1)
# 類選擇器(.class1)
res2 = soup.select(".class2")
print(res2)
# id選擇器(#idname)
res3 = soup.select("#test1")
print(res3)
#  屬性選擇器(p[type="text"]
print(soup.select("p[id='test1']"))
print(soup.select("p['class']"))

在這裡插入圖片描述