bs4 beautifulsoup学习笔记
“”"
TODO
# 用requests库获取网页html
r = requests.get(“https://python123.io/ws/demo.html”)
demo = r.text
“”"
-
对demo进行html的解析
soup =BeautifulSoup(demo, “html.parser”) -
格式化html打印出来
print(print(soup.prettify())) -
打印title标签
print(soup.title) -
打印内容的第一个a标签
print(soup.a) -
打印a标签的属性
print(soup.a.attrs) -
打印a标签的text内容
print(soup.a.string) -
打印a标签的具体href连接属性
print(soup.a.attrs[‘href’]) -
打印a标签的名字,就是a
print(soup.a.name) -
打印a标签的父标签名称
print(soup.a.parent.name) -
获取a的父亲的父亲标签
print(soup.a.parent.parent.name) -
获取head的子节点
print(soup.head.contents) -
遍历子节点
for child in soup.body.children:
print(child) -
遍历子孙节点soup.body.descendants:
-
“”"
.patent 获取节点的父标签
.parents 获取节点的所有父节点
“”"for parent in soup.a.parents:
if parent is None:
print(parent)
else:
print(parent.name) -
获取a标签的后一个平行标签,中间的字符也会算为平行标签
print(soup.a.next_sibling) -
获取a标签的后一个平行标签的后一个平行标签
print(soup.a.next_sibling.next_sibling) -
获取a标签的前一个平行标签,中间的字符也会算为平行标签
print(soup.a.previous_sibling) -
“”"
.next_siblings 遍历后续所有平行节点
.previous_siblings 遍历前续所有平行节点
“”"for sibings in soup.a.next_siblings:
print(sibings) -
获取内容的所有a标签
soup.find_all(“a”)# 打印a中href属性 for link soup.find_all("a"): print(link.get('href'))
-
获取所有ab标签
soup.find_all([‘a’,‘b’])
21.获取p标签class包含xxx属性的标签
soup.find_add(‘p’, ‘xxx’) -
获取所有标签
soup.find_all(True) -
寻找标签名包含b字符的所有标签
soup.find_all(re.compile(‘b’)) -
按固定id值寻找标签
soup.find_all(id=‘xxx’) -
按id值存在xx字符寻找标签
soup.find_all(id=re.compile(‘xxx’)) -
recursive值,是否对子孙全部检索,默认True
soup.find_all(‘a’, recursive = False)
设置为false后,只对子节点进行检索 -
string检索是否存在text为xxx的标签
soup.find_all(string = “xxx”) -
string检索是否存在text包含xxx的标签
soup.find_all(string = re.compile(“xxx”))