1、<>,find_all(name,attrs,recursive,string,**kwargs)
返回一个列表类型,存储查找的结果
name:对标签名称的检索字符串。
import requests from bs4 import BeautifulSoup import re #BeautifulSoup是一个类 r = requests.get('http://python123.io/ws/demo.html') print(r.text) demo = r.text #解析demo的解释器 soup = BeautifulSoup(demo,'html.parser') soup.find_all('a') soup.find_all(['a','b']) for tag in soup.find_all(True): print(tag.name) for tag in soup.find_all(re.compile('b')): print(tag.name)
attrs:对标签属性值得检索字符串,可标注属性检索。
#承接上面的demo soup.find_all('p','course') soup.find_all(id='link1') #我的demo中不包括link soup.find_all(id='link') soup.find_all(id=re.compile('link'))
recursive:是否对子孙全部检索,默认True
#返回的是一个空列表,这意味着是从soup的根节点开始,a标签应该在子孙的后续节点中 print(soup.find_all('a',recursive=False))
string:<>...</>中字符串区域的检索字符串。
print(soup) #必须精确的输入字符串信息 print(soup.find_all(string = 'Basic Python')) #如果希望输入一个字符串,检索出更多的信息 print(soup.find_all(string = re.compile('python')))
2、简短表示
<tag>(..)等价于<tag>.find_all(..)
soup(..)等价于soup.find_all(..)
3、七个扩展方法