beautifulsoup部分知识点

来源:互联网 发布:淘宝助理宝贝描述红叉 编辑:程序博客网 时间:2024/05/29 03:02
html_doc = "<p class='body strikeout' id='zhangsan'></p>"sp = BeautifulSoup(html_doc,"html.parser")print(sp.p['class'])#['body','strikeout']print(sp.p['id'])#zhangsanhtml_doc = "<p>Back to the <a rel="index">homepage</a></p>"#想要得到a标签的rel属性值print(sp.a['rel'])#['index'].string 只能获取子标签是是0个或者1个的内容“<p>123<a href="index">abc</a></p>”sp.p.string  #Nonesp.a.string #abc“<p><a href="index">abc</a></p>”sp.p.string=sp.a.string #abc#获取兄弟节点“<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>”a_sp = sp.aprint(a_sp.next_sibling)#得到div节点#parent节点同理#.previous_sibling 上一个节点#获取所有兄弟节点,迭代“<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>”for i in sp.find("a").next_siblings:     print(i)#<div rel="bey">abc</div><a rel="index">def</a>#下一个节点,有可能与next_sibling相同也可不相同“<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>”sp.find("a").next_element #homepagesp.find("a").next_element.next_element.next_element #<div rel="bey">abc</div>sp.find("a").next_element.next_element.next_element.next_element #abc#next_elements 结果就是next_element结果的迭代#find(re.compile("^b"))使用正则表达式查找以b开头的标签也就是body#Truefor i in sp.find(True):     print(i)#匹配所有子节点#find_all根据id、class查找节点,当有多个属性值的时候,要class保证值的顺序否则匹配不到结果sp.find_all("p",class_="sister")sp.find_all(id="link1")sp.find_all(class_="sister")#查找url中带有elis的连接sp.find_all(href=re.compile("elis"))#查找页面中指定位置的所有hreffor i in sp.find("div",class_="xiaoba").find_all("a"):     print(i.get("href"))#find_all的attrs参数 搜索自定义属性的标签,其中attrs的值是distsp.find_all(attrs={"data-info":"xiaobai"})#通过标签中的值来过滤标签sp.find_all("a",text="xiaobai")#筛选值是xiaobai的标签#limit限制返回结果的条数sp.find_all("a",limit=2)返回前两条数据#查找直接子标签sp.select("p > a")#p标签的直接子标签a,可能是多个或一个,返回列表,是直接子标签sp.select("p > a:nth-of-type(1)")#返回第一个直接子标签,从1开始#查找子标签下的指定子标签,id值或class的值作为查找条件,直接子标签sp.select("div > .class_name")sp.select("div > #id_name")sp.select("div > ul > li > span > b")#支持连贯查询#按照css类名查找sp.select(".class_name"),返回列表#id查找sp.select("#id_name")#标签名、class_name、id_name组合查找元素sp.select("a.class_name")sp.select("a#id_name")#标签名、属性名组合sp.select("a[data-info]")#查找a标签中带有data-info属性的a标签sp.select("a[data-info='xiaobai']")查找data-info的值是xiaobai的标签#还支持类似正则表达式的用法sp.select("a[data-info$="is"]")#查找属性值是以is结尾的标签sp.select("a[data-info^="is"]")#开头