Beautiful Soup 是一个可以从HTML或XML文件中提取数据的python库
pip install bs4
pip install lxml //解析器
代表要解析整个文档树
它支持遍历文档树和搜索文档树中描述的大部分的方法
from bs4 import BeautifulSoup
soup = BeautifulSoup("data)")
#导入模块 from bs4 import BeautifulSoup #创建BeautifulSoup对象 soup = BeautifulSoup('<html>data</html>','lxml') //'lxml'是解析器 print(soup)
find(self,name=None,attrs={},recursive=True,text=None,**kwargs)
参数
name:标签名
attrs:属性名
recursive:是否递归循环查找
text:根据文本内容查找
1,导入模块
2,准备文档字符串
#实验代码 <html> <head> <title>The Dormouse's story</title> </head> <body> <p class="title"> <b>The Dormmouse's story</b> </p> <p class="story">Once upon a time there were there little sisters; and their names were <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>and <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well. </p> <p class="story">...</p>
3,创建BeautifulSoup对象
4,查找文档中的title标签
5,查找文档中的a标签
Tag对象对应于原始文档中的XML或HTML标签
Tag有很多方法和属性,可用 遍历文档树 和 搜索文档树 以及获取标签内容
name 获取标签名称
attrs 获取标签所有属性的键和值
text 获取标签的文本字符串
#导入模块 from bs4 import BeautifulSoup #准备文档字符串 html ='''<html> <head> <title>The Dormouse's story</title> </head> <body> <p class="title"> <b>The Dormmouse's story</b> </p> <p class="story">Once upon a time there were there little sisters; and their names were <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>and <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well. </p> <p class="story">...</p> ''' #创建BeautifulSoup对象 soup = BeautifulSoup(html,'lxml') #一,根据标签进行查找 #查找title标签 title = soup.find('title') print(title) #查找a标签 a = soup.find('a') print(a) #查找所有a标签 a_s = soup.find_all('a') print(a_s) #二,根据属性进行查找 #查找id为link1的标签 #方法一:通过命名参数进行指定 a = soup.find(id='link1') print(a) #方法二:使用attrs来指定属性进行查找 a = soup.find(attrs={'id': 'link1'}) print(a) #三,根据文本进行查找 text = soup.find(text='Elsie') print(text) #Tag对象 print(type(a)) #<class 'bs4.element.Tag'> print('标签名',a.name) print('标签所有属性',a.attrs) print('标签文本内容',a.text)
<title>The Dormouse's story</title> <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a> [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a> <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a> Elsie <class 'bs4.element.Tag'> 标签名 a 标签所有属性 {'href': 'http://example.com/elsie', 'class': ['sister'], 'id': 'link1'} 标签文本内容 Elsie
#1,导入相关模块 import requests from bs4 import BeautifulSoup #2,发送请求,获取疫情首页内容 response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia') home_page = response.content.decode() # print(home_page) #测试一下 #3,使用BeautifulSoup提取疫情数据 soup = BeautifulSoup(home_page,'lxml') script = soup.find(id='getListByCountryTypeService2true') print(script)
<script id="getListByCountryTypeService2true">try { window.getListByCountryTypeService2true = [{"id":10400460,"createTime":1629720585000,"modifyTime":1629720585000,"tags":"","countryType":2,"continents":"北美洲","provinceId":"8","provinceName":"美国","provinceShortName":"","cityName":"","currentConfirmedCount":6609851,"confirmedCount":37711159,"confirmedCountRank":1,"suspectedCount":0,"curedCount":30472804,"deadCount":628504,"deadCountRank":1,"deadRate":"1.66","deadRateRank":96,"comment":"","sort":0,"operator":"fengxin","locationId":971002,"countryShortCode":"USA","countryFullName":"United States of America","statisticsData":"https://file1.dxycdn.com/2020/0315/553/3402160512808052518-135.json","incrVo":{"currentConfirmedIncr":33294,"confirmedIncr":43270,"curedIncr":9748,"deadIncr":228},"showRank":true,"yesterdayConfirmedCount":2147383647,"yesterdayLocalConfirmedCount":2147383647,"yesterdayOtherConfirmedCount":2147383647,"highDanger":"","midDanger":"","highInDesc":"","lowInDesc":"","outDesc":""},{"id":10400566,"createTime":1629720586000,"modifyTime":1629720586000,"tags":"","countryType":2,"continents":"欧洲","provinceId":"10","provinceName":"英国","provinceShortName":"","cityName":"","currentConfirmedCount":6360727,"confirmedCount":6492906,"confirmedCountRank":6,"suspectedCount":0,"curedCount":539,"deadCount":131640,"deadCountRank":7,"deadRate":"2.02","deadRateRank":70,"comment":"","sort":0,"operator":"fengxin","locationId":961007,"countryShortCode":"GBR",......