BeatuifulSoup4

基本使用

from bs4 import BeautifulSoup

html = """
<div>test</div>
"""
# 第二个参数指定解释器:
# 默认html.parser,容错性差
# lxml速度快,需要安装c语言库,容错能力强,常使用
bs = BeautifulSoup(html, 'lxml')
print(bs.prettify())

提取元素

from bs4 import BeautifulSoup

html = """
<tr>
    <td>1</td>
    <td>2</td>
</tr>
<tr class='even'>
    <td>1</td>
    <td>2</td>
</tr>
<a class='test'id='test' href="www.baidu.com">2</a>
<a href="www.baidu.com"></a>
"""
soup = BeautifulSoup(html, 'lxml')
# 1.获取所有tr标签
trs = soup.find_all('tr')
for tr in trs:
    print(tr)
# 2.获取第二个tr标签
# limit最多获取多少个元素
tr = soup.find_all('tr', limit=2)[1]
# 3.获取所有class等于even的标签
trs = soup.find_all('tr', class_='even')
trs = soup.find_all('tr', attrs={'class': 'even'})
print(trs)
# 4.将所有id等于test,class也等于test的a标签提取出来
aList = soup.find_all('a', id='test', class_='test')
# 或者
aList = soup.find_all('a', attrs={'id': 'test', 'class': 'test'})
print(aList)
# 5.获取所有a标签的href属性
aList = soup.find_all('a')
for a in aList:
    # 通过下标操作的方式
    href = a['href']
    print(href)
    # 通过attrs属性的方式
    href = a.attrs['href']
    print(href)
# 6.获取纯文本信息
trs = soup.find_all('tr')
for tr in trs:
    print(tr)
    print(tr.string)
#存在多行文本string无法进行获取
# 7.tr标签下所有文本信息
trs = soup.find_all('tr')
for tr in trs:
    print(list(tr.stripped_strings))
#find()与find_all()
	find返回匹配的第一个标签,find_all返回匹配的所有标签,以列表的形式。

select

from bs4 import BeautifulSoup

html = ''
soup = BeautifulSoup(html, 'lxml')
# 1.通过标签名查找
p = soup.select('p')
# 2.通过类名查找
p = soup.select('.className')
# 3.通过id查找
p = soup.select('#idName')
# 4.通过组合查找
p = soup.select('.box p')
p = soup.select('.box>p')
# 5.通过属性值查找
p = soup.select('a[name="a"]')
#6.再根据类名或者id进行查找的时候,如果还要根据标签名进行过滤
p = soup.select('div.line')

四个常用对象

  1. Tag:BeautifulSoup中所有标签都是Tag类型,并且BeautifulSoup的对象其实本质上也是一个Tag类型,所以其实一些方法比如find,find_all()并不是BeautifulSoup的,而是Tag
  2. NavigableString:继承python的str,用起来跟python中的str是一样的
  3. Comment:就是继承自NavigableString
  4. BeautifulSoup:继承自Tag。用来生成BeautifulSoup树的。

遍历

  1. 返回某个标签下直接子元素,其中也包括字符串。
  • contents:返回一个列表
  • children:返回一个迭代器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个任务可以分为三个部分:使用requests和beautifulsoup4库爬取虎扑体育的数据,使用openpyxl库生成excel表,使用matplotlib库进行数据可视化。具体步骤如下: 1. 使用requests和beautifulsoup4库爬取虎扑体育的数据 首先需要确定要爬取的数据类型,比如是篮球比赛数据、足球比赛数据等等。然后找到相应的数据源,可以是虎扑体育网站上的数据、API接口等等。 以爬取NBA比赛数据为例,可以使用Python的requests库发送HTTP请求,获取虎扑体育NBA比赛数据的HTML页面,再使用beautifulsoup4库解析HTML页面,提取所需信息。代码示例如下: ``` import requests from bs4 import BeautifulSoup url = 'https://nba.hupu.com/schedule' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 解析数据,提取所需信息 ``` 2. 使用openpyxl库生成excel表 获取到数据后,需要将数据存储到excel表中。可以使用Python的openpyxl库进行excel表的生成。 代码示例如下: ``` import openpyxl # 创建工作簿和工作表 wb = openpyxl.Workbook() ws = wb.active # 写入表头 ws['A1'] = '日期' ws['B1'] = '时间' ws['C1'] = '主队' ws['D1'] = '客队' # 写入数据 for i in range(len(data)): ws.cell(row=i+2, column=1, value=data[i]['date']) ws.cell(row=i+2, column=2, value=data[i]['time']) ws.cell(row=i+2, column=3, value=data[i]['home_team']) ws.cell(row=i+2, column=4, value=data[i]['away_team']) # 保存文件 wb.save('nba_data.xlsx') ``` 3. 使用matplotlib库进行数据可视化 最后可以使用Python的matplotlib库进行数据可视化。可以根据需求选择不同的可视化方式,比如柱状图、折线图等等。 代码示例如下: ``` import matplotlib.pyplot as plt # 统计数据 teams = {} for i in range(len(data)): home_team = data[i]['home_team'] away_team = data[i]['away_team'] if home_team not in teams: teams[home_team] = 0 if away_team not in teams: teams[away_team] = 0 teams[home_team] += 1 teams[away_team] += 1 # 可视化数据 plt.bar(teams.keys(), teams.values()) plt.title('NBA Teams') plt.xlabel('Team') plt.ylabel('Count') plt.show() ``` 以上是一个简单的示例,实际应用中需要根据数据类型和需求进行相应的处理和可视化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值