Python BeautifulSoup返回空的td标记

Python BeautifulSoup返回空的td标记,python,html,python-3.x,beautifulsoup,Python,Html,Python 3.x,Beautifulsoup,我正在尝试从此url“”获取一些信息。我想用这个id=“keyfacts playbyplay content scroll” 我使用以下代码访问此表: table = page_soup.find(id="keyfacts-playbyplay-content-scroll").findAll("table", {"class" : "twelve even"}) 然后,打印“表格”以查看我得到了什么,我得到了一个没有数据的tr。然而,使用firefox或chrome控制台,我们可以看到有7

我正在尝试从此url“”获取一些信息。我想用这个
id=“keyfacts playbyplay content scroll”

我使用以下代码访问此表:

table = page_soup.find(id="keyfacts-playbyplay-content-scroll").findAll("table", {"class" : "twelve even"})
然后,打印“表格”以查看我得到了什么,我得到了一个没有数据的tr。然而,使用firefox或chrome控制台,我们可以看到有799个表行包含数据

这是我在python控制台中打印“表”时得到的结果:

>> table
<table class="twelve even">
<thead>
<tr>
<th colspan="2">Tiempo</th>
<th colspan="2">Cuarto</th>
<th colspan="2">Puntuación</th>
<th colspan="8">Acción</th>
</tr>
</thead>
<tbody>
<!-- ko foreach: LINES -->
<tr>
<td class="text-center" colspan="2" data-bind="text : time"></td>
<td class="text-center" colspan="2" data-bind="text : quarter"></td>
<td colspan="2" data-bind="text : scoreA()==null ? '' : scoreA()+'-'+scoreB()" style="color:#FB0127; text-align: center"></td>
<td colspan="8" data-bind="text : text"></td>
</tr>
<!-- /ko -->
</tbody>
</table>
>表格
廷波
卡托
Puntuación
阿克松
这是我们在控制台中看到的:

为什么不得到同样的?所有tr标签及其td标签是否包含信息


我做错了什么

其背后的原因是,我们需要使用类似于
Selenium
的浏览器模拟器来呈现由
javascript
生成的动态内容。 如果我们尝试仅通过请求请求此数据,我们将无法获得您要查找的
td
s。我会推荐官方的Selenium文档或Youtube教程,一旦你掌握了一些东西,它就很容易使用了


这不起作用,它将只返回HTML中不包含您要查找的信息的一部分(即表元素)

表的内容是通过JavaScript动态生成的。这就是页面源没有它们的原因<代码>请求模块在不执行JavaScript的情况下获取页面源代码,这就是您看到不完整数据的原因

如果在dev工具中选中
Network
选项卡下的
XHR
选项卡,将向其发送一个请求,该请求以JSON的形式返回数据。您可以使用
请求
模块及其内置的
.json()
函数解析此数据

唯一的问题是,您需要传递以下标题。如果没有它们,网站将阻止脚本,您将看到
请求。异常。ConnectionError

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
           'Accept': 'application/json, text/javascript, */*; q=0.01'}

r = requests.get('http://baloncestoenvivo.feb.es/api/KeyFacts/1881578', headers=headers)
data = r.json()
现在,您可以从
数据
变量中获取所有表值。要查看其结构,请使用模块

例如,要获取玩家姓名和相应的点数,可以使用以下方法:

for player in data['SCOREBOARD']['TEAM'][0]['PLAYER']:
    name = player['name']
    points = player['pts']
    print(name, points)
输出:

A. ELONU 6
L. NICHOLLS GONZALEZ 10
S. DOMINGUEZ FERNANDEZ 13
L. QUEVEDO CAÑIZARES 0
M. ASURMENDI VILLAVERDE 5
F. ABDI 0
E. DE SOUZA MACHADO 13
L. GIL COLLADO 0
K. GIVENS 12
D. MOSS 2
A. ROBINSON 0

你好我想感谢您的帮助,但最后对我来说,获取json更有用。非常感谢您的帮助!!!
A. ELONU 6
L. NICHOLLS GONZALEZ 10
S. DOMINGUEZ FERNANDEZ 13
L. QUEVEDO CAÑIZARES 0
M. ASURMENDI VILLAVERDE 5
F. ABDI 0
E. DE SOUZA MACHADO 13
L. GIL COLLADO 0
K. GIVENS 12
D. MOSS 2
A. ROBINSON 0