码迷,mamicode.com
首页 > Web开发 > 详细

基于BeautifulSoup库的HTML内容的查找

时间:2019-01-19 13:11:12      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:basic   parser   request   tab   style   存储   link   返回   匹配   

一、BeautifulSoup库提供了一个检索的参数:

<>.find_all(name,attrs,recursive,string,**kwargs),它返回一个列表类型,存储查找的结果。它的一些对应的简写形式是:

  <tag>(...) <=> <tag>.find_all(...)

  soup.(...) <=> soup.find_all(...)

?name:按照标签名称进行检索,可以同时对多个标签名称同时检索

?attr:按照标签的属性进行检索,可以标注为属性检索

?recursive:是否对子孙全部检索,默认为True

?string:对标签中字符串区域进行检索,<>...string...</>

 

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import re
 4 
 5 r = requests.get(http://python123.io/ws/demo.html)
 6 r.raise_for_status()
 7 r.encoding = r.apparent_encoding
 8 demo = r.text
 9 soup = BeautifulSoup(demo,"html.parser")
10 
11 print(soup.find_all(a))#按照name进行检索
12 print(soup.find_all([a,b]))#同时对多个name标签进行检索
13 for tag in soup.find_all(re.compile(b)):#对以b开头的所有标签进行检索
14     print(tag.name)
15     print(tag)
16 
17 print("")
18 print(soup.find_all(p,course))#按照标签里面的属性值进行检索
19 print(soup.find_all(id=link1))#按照指定的属性的属性值进行检索,严格匹配
20 print(soup.find_all(id = re.compile(link)))#特定属性值的不严格匹配
21 
22 print("")
23 print(soup.find_all(a,recursive = False))#不对所有子孙检索,只检索儿子节点,起点是html标签,如果返回的是空列表[],就代表a标签是在儿子标签之后的标签里面
24 
25 print(soup.find_all(string = Basic Python‘))#检索字符串,严格匹配
26 print(soup.find_all(string = re.compile(Python‘)))#不严格匹配

 

 

 

二、<>find_all(..)的扩展方法

方法 说明
<>.find() 搜索,只返回一个结果,字符串类型,同.find_all()参数
<>.find_parent() 在先辈中搜索,只返回一个结果,返回字符串类型,同.find()参数
<>.find_parents() 在先辈中搜索,返回列表类型,同.find_all()参数
<>.find_next_sibling() 在后续平行节点中搜索,只返回一个结果,返回字符串类型,同.find()参数
<>.find_next_siblings() 在后续平行节点中搜索,返回一个列表类型,同.find_all()参数
<>.find_previous_sibling() 在前续平行节点中搜索,只返回一个结果,返回字符串类型,同参.find()数
<>.find_previous_siblings() 在前续平行节点中搜索,返回一个列表类型,同.find_all()参数

 

基于BeautifulSoup库的HTML内容的查找

标签:basic   parser   request   tab   style   存储   link   返回   匹配   

原文地址:https://www.cnblogs.com/BASE64/p/10291304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!