如何从加载缓慢的网站上抓取表数据

西蒙·瓦茨(Simon C Watts):

我正尝试从以下网站抓取表格数据:https : //fantasyfootball.telegraph.co.uk/premier-league/statscentre/

目的是获取所有玩家数据并将其存储在字典中。

我正在使用BeautifulSoup,并且能够从html内容中找到表,但是返回的表主体为空。

通过阅读其他文章,我发现这可能与网站加载网站后网站加载表数据的速度缓慢有关,但是我找不到解决此问题的方法。

我的代码如下:

from bs4 import BeautifulSoup
import requests

# Make a GET request to feth the raw HTML content
html_content = requests.get(url).text

# Parse the html content
soup = BeautifulSoup(html_content, "lxml")

# Find the Title Data within the website
player_table = soup.find("table", attrs={"class": "player-profile-content"})

print(player_table)

我得到的结果是这样的:

<table class="playerrow playlist" id="table-players">
    <thead>
        <tr class="table-head"></tr>
    </thead>
    <tbody></tbody>
</table>

网站上实际的HTML代码很长,因为它们将大量数据<tr>以及后续数据打包到其中<td>因此除非有人询问,否则我不会在此处发布。可以说<td>标题行中有几行,正文中有几<tr>

安德烈·凯斯利(Andrej Kesely):

此脚本将打印所有玩家统计信息(数据通过Json从外部URL加载):

import ssl
import json
import requests
from urllib3 import poolmanager

# workaround to avoid SSL errors:
class TLSAdapter(requests.adapters.HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        """Create and initialize the urllib3 PoolManager."""
        ctx = ssl.create_default_context()
        ctx.set_ciphers('DEFAULT@SECLEVEL=1')
        self.poolmanager = poolmanager.PoolManager(
                num_pools=connections,
                maxsize=maxsize,
                block=block,
                ssl_version=ssl.PROTOCOL_TLS,
                ssl_context=ctx)

url = 'https://fantasyfootball.telegraph.co.uk/premier-league/json/getstatsjson'

session = requests.session()
session.mount('https://', TLSAdapter())
data = session.get(url).json()

# uncomment this to print all data:
# print(json.dumps(data, indent=4))

for s in data['playerstats']:
    for k, v in s.items():
        print('{:<15} {}'.format(k, v))
    print('-'*80)

印刷品:

SUSPENSION      None
WEEKPOINTS      0
TEAMCODE        MCY
SXI             34
PLAYERNAME      de Bruyne, K
FULLCLEAN       -
SUBS            3
TEAMNAME        Man City
MISSEDPEN       0
YELLOWCARD      3
CONCEED         -
INJURY          None
PLAYERFULLNAME  Kevin de Bruyne
RATIO           40.7
PICKED          36
VALUE           5.6
POINTS          228
PARTCLEAN       -
OWNGOAL         0
ASSISTS         30
GOALS           14
REDCARD         0
PENSAVE         -
PLAYERID        3001
POS             MID
--------------------------------------------------------------------------------

...and so on.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

链接到事件点击后如何从网站上抓取数据?

烦恼如何从该网站上抓取数据(使用R)

我如何从这个网站上抓取不断变化/正在更新的特定数据?

如何使用VBA从Bloomberg网站上抓取数据

如何从网站上的最后一张表格中抓取数据

如何抓取使用node.js异步加载数据的网站?

如何使用Flutter从网站上抓取图像?

如何从物业税网站上抓取数据

如何从物业税网站上抓取数据

网站上iframe加载缓慢

如何从网站上抓取数据?

使网站上的图片加载缓慢:)

如何从需要验证代码的网站上抓取数据?

如何使用python中的BeautifulSoup库从具有“查看更多”选项的网站上抓取数据

如何从网站上抓取所有数据?

如何从网站上抓取信息

如何从网站上抓取所有图像?

如何在网站上设置下拉框,以便选择选项并抓取数据

如何从网站上抓取数据并以 R 中的指定格式写入 csv?

如何将网站上所有抓取的数据保存在熊猫数据框中?

如何使用节点从网站上抓取数据

如何使用异常表格从选举网站上抓取数据

Dinamica JS 加载网站上的网页抓取

当 html 中的数据点是动态的时,如何从网站上抓取和保存图表

如何从该网站上抓取 JSON 文件?

如何从网站上抓取描述

如何使用 Scrapy 在可以选择加载更多帖子的网站上抓取数据?

如何抓取网站上的特定信息

使用 Google 应用程序脚本从网站上抓取数据并粘贴到 Google 工作表