3.BeautifulSoup库
Posted Mrs.King_UP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.BeautifulSoup库相关的知识,希望对你有一定的参考价值。
- 解析网页:
- 导入BeautifulSoup:from bs4 import BeautifulSoup
- 解析html或XML文件,只需设置对应的转换器即可
import requests
from bs4 import BeautifulSoup
url=”http://baidu.com”
r=requests.get(url)
demo=r.text
soup=BeautifulSoup(demo,”html.parser”) #两个参数:一个为html页面,另一个是解析器
print(soup.prettify())#格式化html结构,更加美观的显示html页面信息
- 结构化数据的浏览:
- soup:相当于树结构的根节点
- soup.title:返回第一个
, bs4.element.Tag类型
The Dormouse’s story
-
soup.title.name:返回标签名称,字符串str类型
#‘title’ -
soup.title.string:获取
的内容,返回值为bs4.element.NavigableString类型
#‘The demo python introduces several python courses.’ -
soup.title.parent.name:返回第一个
标签的父元素的名称
#‘head’ -
soup.p:返回所有子孙中第一个
-
soup.p[‘class’]:返回第一个
标签的class属性名称,结果为list列表类型 -
soup.a.attrs:返回第一个标签的所有属性值,结果为dict字典类型
#‘href’: ‘http://www.icourse163.org/course/BIT-268001’,
‘class’: [‘py1’],
‘id’: ‘link1’
#可以通过soup.a.attrs[‘class’]获取key为class的具体值 -
soup.find_all(name,attrs,recursive,string):结果为list形式
-
name为标签名称的检索字符串,可以为一个标签or读个标签名称的列表;如:soup.find_all(‘a’):返回所有的;soup.find_all([‘a’,’p’]):返回是所有的标签和
标签 -
attrs:为字典形式,包含若干属性和对应的属性值,如:.find_all(‘span’,‘id’:[’link1’,’link2’]),找到所有的id为link1或link2的span标签
-
recursive:默认为True, 对子孙节点进行遍历;若为False,只对一级节点进行遍历
-
string:对标签的文本信息进行完全匹配,如:soup.find_all(‘a’,string=‘Advanced Python’),这里的string可以换成text;若想进行不完全匹配,可以soup.find_all(‘a’,string=re.compile(“Python”)),这里匹配的是包含python的字符串的标签a的列表
-
soup.find(id=”link3”):此用法和find_all相同,不过只返回第一个值;返回id=”link3”的第一个标签;soup.find(‘div’,‘articles-list’),默认为class
-
当html结构中有注释时(b标签内部结构中有注释),通过soup.b.string并不会标志其为注释类型,但是其类型为bs4.element.Comment
以上是关于3.BeautifulSoup库的主要内容,如果未能解决你的问题,请参考以下文章
Python 利用 BeautifulSoup 爬取网站获取新闻流