- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 BeautifulSoup 从以下网站提取表数据:https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html
有许多表具有唯一的表 ID,我可以使用以下命令提取它们:
from bs4 import BeautifulSoup
from selenium import webdriver
stat_dict={'Disposals' : 'sortableTable0',
'Kicks' : 'sortableTable1',
'Marks' : 'sortableTable2',
'Handballs' : 'sortableTable3',
'Goals' : 'sortableTable4',
'Behinds' : 'sortableTable5',
'Hitouts' : 'sortableTable6',
'Tackles' : 'sortableTable7',
'Rebounds' : 'sortableTable8',
'Inside50s' : 'sortableTable9',
'Clearances': 'sortableTable10',
'Clangers' : 'sortableTable11',
'FreesFor' : 'sortableTable12',
'FreesAgainst' : 'sortableTable13',
'ContestedPosessions' : 'sortableTable14',
'UncontestedPosesseions' : 'sortableTable15',
'ContestedMarks' : 'sortableTable16',
'MarksInside50' : 'sortableTable17',
'OnePercenters' : 'sortableTable18',
'Bounces' : 'sortableTable19',
'GoalAssists' : 'sortableTable20',
'Timeplayed' : 'sortableTable21'}
driver = webdriver.Firefox(executable_path='...')
url="https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html"
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, "lxml")
stat_wanted='Disposals'
table = soup.find_all('table', {'id':stat_dict[stat_wanted]})
从我提取的表中,我想做相当于下面的代码,如果我使用 soup.find('tbody') ,该代码就可以工作。我知道这可能不是实现结果的最佳或最漂亮的方式,但我只是通过代码来了解它是如何工作的。
def get_disposals(team_lower_case, nplayers, nrounds):
list=[]
page=requests.get("https://afltables.com/afl/stats/teams/" +str(team_lower_case) +"/2018_gbg.html")
soup=BeautifulSoup(page.content, 'html.parser')
filter=soup.find('tbody')
for var in filter.find_all('tr'):
columns=var.find_all('td')
for val in columns:
list.append(val.get_text())
columns=['PlayerName']
for n in range(1,nrounds+1):
columns.append('R'+str(n))
df=pd.DataFrame(np.array(list).reshape(nplayers,nrounds+1), columns=columns)
return df
get_disposals("fremantle",30,8)
我已尝试使用下面的代码从所有标记中获取文本,但结果并未复制我在提取第一个代码片段中的特定表格时所实现的目标。
for tr in table:
zxc=tr.find_all('td')
print(zxc)
for var in zxc:
list=[]
list.append(var.get_text())
print(list)
但这只会产生标签及其内容的列表,而不是您在 get_text 按我希望的方式工作时所期望的内容。
最佳答案
您可能会发现以下方法更容易一些:
import pandas as pd
tables = pd.read_html("https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html")
for df in tables:
df.drop(df.columns[9:], axis=1, inplace=True) # remove unwanted columns
df.columns = df.columns.droplevel(0) # remove extra index level
for table in tables:
print(table[:3:], '\n') # show first 3 rows
这将为您提供 pandas 数据框的列表。每一个都包含每个表的所有信息。例如,第一个包含 Disposals
:
Player R1 R2 R3 R4 R5 R6 R7 Tot
0 Atkins, Rory 14.0 17.0 22.0 28.0 24.0 28.0 16.0 149
1 Betts, Eddie 14.0 20.0 16.0 6.0 NaN NaN 10.0 66
2 Brown, Luke 15.0 23.0 23.0 16.0 16.0 24.0 11.0 128
Player R1 R2 R3 R4 R5 R6 R7 Tot
0 Atkins, Rory 8.0 13.0 12.0 16.0 17.0 18.0 10.0 94
1 Betts, Eddie 7.0 6.0 10.0 2.0 NaN NaN 7.0 32
2 Brown, Luke 10.0 17.0 17.0 10.0 11.0 16.0 9.0 90
然后您可以使用 pandas 来处理数据。
关于python - 使用 BeautifulSoup 获取结果集中 td 标签的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50287133/
我想做一个系统,用户可以上传和下载文件。系统将具有一个集中的地形,但在很大程度上依赖于节点将相关数据通过中心节点传输给其他节点我不希望对等端保存整个文件,而是希望它们保存整个数据集的一个压缩的加密部分
我正在 Riverpod Auth 流程样板应用程序中工作。 我想对所有异步功能甚至登录和注销使用通用加载屏幕。目前,如果 Appstate 加载我显示加载屏幕,我有 AppState 提供程序。它可
我有一个 functions.php 文件,其中包括以下功能: function head() { global $brand, $brandName, $logo, $slogan, $si
我有下一个 html 代码 ... 我想选择随机的 div 数组来向它们添加一个事件类,因为我使用这个 jquery 代码 function randOrder() { return
多年来,我创建并调整了一组NAnt脚本以执行完整的项目构建。主脚本采用一个应用程序端点(例如,一个Web应用程序项目),并从源代码控制中对其进行完整的构建。脚本已预先配置了与构建输出位置,源代码控制地
我希望我的 jQuery 插件在 $(window) 选择上调用时表现不同。如何检查 window 是否在集合中?到目前为止我的尝试: >>> $(window) == $(window) false
考虑到我们有 let existingSet = $(); 如何通过 jQuery 将 newElements 添加到该集合中? existingSet = existingSet.add(newEl
我需要在 priority_queue 中保存一个整数集合。但是我需要能够删除这些整数中的一个,即使它不是我容器的第一个元素。我无法使用 std::priority_queue。我选择使用一个集合来根
对于我的网站,我一直在尝试集中所有内容以便在移动设备上显示: http://m.bachatdeals.com 我在移动设备上打开网站后,内容下方有很多空间,我必须捏住 zoon 才能阅读,如何删除下
我计划为我的剑道验证器制定一些自定义规则,并希望在所有验证器之间共享。在我的验证器代码中,我有: rules: { bothorblank: function (input) {
这是我的函数,用于测试两个点 x 和 y 在 MAX_ITERATION 255 之后是否在 mandelbrot 集合中。如果不在,它应该返回 0,如果在,则返回 1。 int isMandelbr
致力于从移动设备扩展到桌面设备的简单网站布局。一切都按预期工作,但由于某种原因,我的 float div 没有集中放置。我已经完成了正常工作,但这次不适合我?有什么想法吗? 这是我的 CSS: /*
我的“div”元素有一个相对宽度,它不是绝对的,所以我不能使用精确的数字来集中。一个不错的解决方案是使用“display: inline-block”: body { text-align:
目前我拥有的所有类都处理它们自己的导入。使用一个典型的例子: [ImportMany] private Lazy[] someOfMyInterfaces { get; set; } public M
我有一个类定义: class Question: title = "" answer = "" def __init__(self, title, answer):
我正在尝试将一个对象 Point2D 插入到一个 Point2D 集合中,但我做不到,似乎该集合适用于 int 和 char 但不适用于对象。 我需要帮助来了解如何将对象插入到集合中???假设我想按
我的应用上有一些弹出窗口,它是全屏的,代码如下: content.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
我们有一个多模块 Quarkus 项目,带有一个公共(public)库和多个应用程序。在通用的 lib 中,我们有各种缓存用于所有应用。 我们希望不必在每个应用程序的所有配置文件中配置保留和容量。 有
这个问题在这里已经有了答案: Nested facets in ggplot2 spanning groups (2 个回答) 去年关闭。 我在 ggplot 中创建了一个图表里面有两个变量 face
我无法集中v-radio-group。这是我得到的:
我是一名优秀的程序员,十分优秀!