zoukankan      html  css  js  c++  java
  • 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"]")#开头  
  • 相关阅读:
    No Hibernate Session bound to thread, and configuration does not allow
    谈谈数据库中MyISAM与InnoDB区别
    hibernate实体的几种状态:
    解决Eclipse导出javadoc乱码问题
    freemarker截取字符串
    many-to-one和one-to-many的配置比较
    one-to-many many-to-one配置解释
    extends:类似于java中的继承特征,extends="struts-default"
    eclipse 中创建maven web项目
    java.lang.ClassNotFoundException: javax.persistence.EntityListeners
  • 原文地址:https://www.cnblogs.com/summerkxy/p/7083599.html
Copyright © 2011-2022 走看看