爬虫第2周——信息提取及基于bs4库的HTML内容查找find_all方法

信息提取:从标记后的信息中提取所关注的内容
方法一:完整解析信息的标记形式,再提取关键信息
XML、JSON、TAML
需要标记解析器,例如:bs4库的标签树遍历
优点:信息解析准确
缺点:提取过程繁琐,速度慢
方法二:无标记形式,直接搜索关键信息
搜索
对信息的文本查找函数即可
优点:提取过程简洁,速度较快
缺点:提取结果准确性与信息内容相关
融合方法:结合形式解析与搜索方法,提取关键信息
需要标记解析器及文本查找函数
实例

#提取HTML中所有url连接
#思路1:搜索到所有<a>标签
#    2:解析<a>标签,提取href后的链接内容
>>> from bs4 import BeautifulSoup
>>> import requests
>>> r = requests.get("https://python123.io/ws/demo.html")
>>> r.text
>>> demo = r.text
>>> soup = BeautifulSoup(demo,'html.parser')
>>> for link in soup.find_all('a'):
 print(link.get('href'))
在这里插入代码片

结果:
http://www.icourse163.org/course/BIT-268001
http://www.icourse163.org/course/BIT-1001870001

<>.find_all(name,attrs,recursive,string,**kwargs)

返回一个列表类型,存储查找的结果|

名称说明
name对标签名称的检索字符串
attrs对标签属性值的检索字符串,可标注属性检索
recursive是否对子孙全部检索,默认True
string<>…</>中字符串区域的检索字符串
#name:对标签名称的检索字符串
>>> soup.find_all('a')		#查找<a>标签
>>>soup.find_all(['a','b'])	#查找<a>和<b>标签>>> 
>>>for tag in soup.find_all(True):	#遍历soup中所用标签并打印出标签名字
	 print(tag.name)
>>> import re	#引入正则表达式库
>>> for tag in soup.find_all(re.compile('b')):#查找soup中以‘b’开头的标签并打出名字
 	print(tag.name)
 #attrs:对标签属性值的检索字符串,可标注属性检索
  >>>soup.find_all('p','course')	#查找包含‘course’属性值的<p>
  >>> soup.find_all(id='link')	#需精确查找
  []
  >>> soup.find_all(id='link1')
  [<a class="py1" href="http://www.icourse163.org/course/BIT-268001"  id="link1">Basic Python</a>]
  >>> soup.find_all(id=re.compile('link'))	#查找以‘link’开头的信息

#recursive:是否对子孙全部检索,默认True 
>>> soup.find_all('a')	#搜索soup节点下的名为<a>子孙节点
[<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>, <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>]
>>> soup.find_all('a',recursive = False )	#搜索soup节点下的名为<a>儿子节点
[]		#为空,<a>不是soup节点的儿子节点

 #string  <>...</>中字符串区域的检索字符串
>>> soup.find_all(string = 'Basic Python')
['Basic Python']
>>> soup.find_all(string = re.compile('python'))	#检索带有‘python’的字符串
['This is a python demo page', 'The demo python introduces several python courses.']
在这里插入代码片

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值