爬虫find()和find_all()遇到的问题集合

from bs4 import BeautifulSoup
lxml 以lxml形式解析html,例:BeautifulSoup(html,'lxml') # 注:html5lib 容错率最高
find 返回找到的第一个标签
find_all 以list的形式返回找到的所有标签
limit 指定返回的标签个数
attrs 将标签属性放到一个字典中
string 获取标签下的非标签字符串(值), 返回字符串
strings 获取标签下的所有非标签字符串, 返回生成器。
stripped_strings 获取标签下的所有非标签字符串,并剔除空白字符,返回生成器。
get_text # 获取标签下的所有非标签字符串,返回字符串格式
contents、children都是返回某个标签下的直接子元素,包含字符串。 contents 返回一个列表,children 返回一个生成器

记录第一个问题 .text

soup.find_all().text

报错内容:
AttributeError: ResultSet object has no attribute ‘text’. You’re probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

当不是一个单独的对象的时候不能使用.text方法

想要返回第二个标签的内容

方法一:通过limit可指定返回的标签数量

p = soup.find_all("p",limit=2)[1] # 从列表中获取第二个元素,limit 获取标签个数
print(p.text)

方法二:获取class的p标签

d = soup.find(class_="wy_contMain fontSt")
p =d.find("p")

posted @ 2020-11-17 00:05  cloudchild  阅读(2981)  评论(0编辑  收藏  举报