BeautifulSoup可以很方便地查找HTML标签以及其中的属性和内容
import requests
from bs4 import BeautifulSoup
# 创建BeautifulSoup对象
# 当数据来源为本地文件时
file = open("xxx.html")
soup = BeautifulSoup(file, "lxml")
# 当数据来源为网络时
content = requests.get("url请求").text
soup = BeautifulSoup(content, "lxml")
#1 按标签名查找标签
soup.a # 获取第一个匹配到的标签
#2 属性
soup.a.attrs # 获取标签中所有属性名与对应属性值的字典
soup.a.attrs["属性名"] # 获取属性名对应的属性值
soup.a.["属性名"] # 获取属性名对应的属性值的简写
soup.a.string # 获取第一个匹配到的标签的内容
soup.a.text # 获取第一个匹配到的标签以及其所包含的子标签的所有内容
#3 函数
soup.a.get_text() # 同soup.a.text
soup.find("a") # 同soup.a
soup.find("a",属性名="属性值") # 根据属性值定位到第一个匹配到的标签
注意: 若属性名是 class 则需要在后面加个下划线,写成 class_
soup.findall("a") # 获取匹配到的所有标签, 返回一个列表
soup.findall(["a", "b"]) # 可以获取多种类的标签
soup.findall("a", limit=2) # 获取前2个匹配到的标签
soup.select("选择器")
选择器包括:
标签选择器:soup.select("a")
ID选择器:soup.select("#xxx")
类选择器:soup.select(".xxx")
层级选择器:soup.select("div a") # 任意多级
或是:soup.select("div > a") # 直系的一级
注意:select函数返回的永远是一个列表