gpt4 book ai didi

python - 如何正确使用 BeautifulSoup4 中的 select 函数?

转载 作者:行者123 更新时间:2023-11-28 22:11:19 24 4
gpt4 key购买 nike

我正在使用 BS4 编写我的第一个脚本作为我对网络抓取的介绍,但我遇到了麻烦。我正在学习 Automate The Boring Stuff with Python 教程,他使用 soup.select('insert class here') 来选择类。当我运行下面显示的代码时,它告诉我 soup 不是一个正确的命令 AttributeError: 'Response' object has no attribute 'select'

import webbrowser
import selenium
import bs4
import requests

table = []

url = 'http://espn.com/mlb/team/stats/_/name/wsh'
r = requests.get(url)
page = bs4.BeautifulSoup(r.text)
table = soup.select("Table2__th")
print(str(table))

最佳答案

我假设您真的想要表中的数据?该内容是使用 javascript 呈现的,因此如果您以表本身为目标,仅请求将无济于事。

更好的方法是从脚本标签中获取,然后您可以获得所有实际统计信息。下面我抓取该信息并将其放入一个整洁的数据框中以供查看。

import bs4
import requests
import re
import json
import pandas as pd

url = 'http://espn.com/mlb/team/stats/_/name/wsh'
r = requests.get(url)
page = bs4.BeautifulSoup(r.text, 'lxml')
r = re.compile(r'playerStats":(.*),"teamLeaders"' , re.DOTALL)
data = page.find('script', text=r).text
script = r.findall(data)[0]
players_info = json.loads(script)
player_batting_stats = players_info[0]
expanded_player_batting_stats = players_info[1]

table1 = []
table2 = []
headers = ['Name', 'GP', 'AB', 'R', 'H', '2B', '3B', 'HR', 'RBI', 'TB', 'BB', 'K', 'SB', 'BA', 'OBP', 'SLG', 'OPS', 'WAR']

for player in player_batting_stats:
name = player['athlete']['name']
row = [stat['value'] for stat in player['statGroups']['stats']]
row.insert(0, name)
table1.append(row)

df1 = pd.DataFrame(table1, columns = headers)
print(df1.head())

# repeat for table2 using expanded_player_batting_stats

关于python - 如何正确使用 BeautifulSoup4 中的 select 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com