soup = BeautifulSoup(html_doc)
soup.find_all(...)的返回时包含节点(title、p、a)的列表,每个列表元素是对应节点的全部内容
soup.find()只返回第一个符合条件的结果,所以soup.find()后面可以直接接.text或者get_text()来获得标签中的文本
print(soup.find(class="sister")) 报错:invalid syntax
print(soup.find(id="link3")) 就okay
为什么
解答:
用法p=soup.find('ul', id="producers"),那么可以得到<xx>...</xx>的所有结果,其特点是把标签更一步精确化以便于查找。
对于大多数的情况可以用上面的方法解决,但是有两种情况则要用到参数attrs:一是标签字符中带有-,比如data-custom;二是class不能看作标签属性。解决的办法是在attrs属性用字典进行传递参数:
soup.find(attrs={'data-custom':'xxx'})以及 soup.find(attrs={'class':'xxx'})
例如:
print(soup.find(attrs={'class':'title'}))
(原文链接:https://www.jianshu.com/p/ef2f246cae46)
tag的 .contents 属性可以将tag的子节点以列表的方式输出
find()以及find_all()返回的是节【包含其节点内容】