beautifulsoup部分知识点

 1 html_doc = "<p class='body strikeout' id='zhangsan'></p>"  
 2 sp = BeautifulSoup(html_doc,"html.parser")  
 3 print(sp.p['class'])  
 4 #['body','strikeout']  
 5 print(sp.p['id'])  
 6 #zhangsan  
 7   
 8 html_doc = "<p>Back to the <a rel="index">homepage</a></p>"  
 9 #想要得到a标签的rel属性值  
10 print(sp.a['rel'])  
11 #['index']  
12   
13 .string 只能获取子标签是是0个或者1个的内容  
14 “<p>123<a href="index">abc</a></p>15 sp.p.string  #None  
16 sp.a.string #abc  
17 “<p><a href="index">abc</a></p>18 sp.p.string=sp.a.string #abc  
19   
20 #获取兄弟节点  
21 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>22 a_sp = sp.a  
23 print(a_sp.next_sibling)#得到div节点  
24 #parent节点同理  
25 #.previous_sibling 上一个节点  
26   
27   
28 #获取所有兄弟节点,迭代  
29 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>30 for i in sp.find("a").next_siblings:  
31      print(i)  
32 #<div rel="bey">abc</div><a rel="index">def</a>  
33   
34 #下一个节点,有可能与next_sibling相同也可不相同  
35 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>36 sp.find("a").next_element #homepage  
37 sp.find("a").next_element.next_element.next_element #<div rel="bey">abc</div>  
38 sp.find("a").next_element.next_element.next_element.next_element #abc  
39 #next_elements 结果就是next_element结果的迭代  
40   
41 #find(re.compile("^b"))使用正则表达式查找以b开头的标签也就是body  
42   
43 #True  
44 for i in sp.find(True):  
45      print(i)  
46 #匹配所有子节点  
47   
48 #find_all根据id、class查找节点,当有多个属性值的时候,要class保证值的顺序否则匹配不到结果  
49 sp.find_all("p",class_="sister")  
50 sp.find_all(id="link1")  
51 sp.find_all(class_="sister")  
52   
53 #查找url中带有elis的连接  
54 sp.find_all(href=re.compile("elis"))  
55   
56 #查找页面中指定位置的所有href  
57 for i in sp.find("div",class_="xiaoba").find_all("a"):  
58      print(i.get("href"))  
59   
60 #find_all的attrs参数 搜索自定义属性的标签,其中attrs的值是dist  
61 sp.find_all(attrs={"data-info":"xiaobai"})  
62   
63 #通过标签中的值来过滤标签  
64 sp.find_all("a",text="xiaobai")#筛选值是xiaobai的标签  
65   
66 #limit限制返回结果的条数  
67 sp.find_all("a",limit=2)返回前两条数据  
68   
69 #查找直接子标签  
70 sp.select("p > a")#p标签的直接子标签a,可能是多个或一个,返回列表,是直接子标签  
71 sp.select("p > a:nth-of-type(1)")#返回第一个直接子标签,从1开始  
72   
73 #查找子标签下的指定子标签,id值或class的值作为查找条件,直接子标签  
74 sp.select("div > .class_name")  
75 sp.select("div > #id_name")  
76 sp.select("div > ul > li > span > b")#支持连贯查询  
77   
78 #按照css类名查找  
79 sp.select(".class_name"),返回列表  
80   
81 #id查找  
82 sp.select("#id_name")  
83   
84 #标签名、class_name、id_name组合查找元素  
85 sp.select("a.class_name")  
86 sp.select("a#id_name")  
87   
88 #标签名、属性名组合  
89 sp.select("a[data-info]")#查找a标签中带有data-info属性的a标签  
90 sp.select("a[data-info='xiaobai']")查找data-info的值是xiaobai的标签  
91 #还支持类似正则表达式的用法  
92 sp.select("a[data-info$="is"]")#查找属性值是以is结尾的标签  
93 sp.select("a[data-info^="is"]")#开头  

 

posted on 2017-06-27 09:56  summerkxy  阅读(257)  评论(0编辑  收藏  举报

导航