首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从该网站拉取表格数据?

如何从该网站拉取表格数据?
EN

Stack Overflow用户
提问于 2021-11-03 04:59:52
回答 2查看 84关注 0票数 0

使用下面的代码,我不能从游戏中心的pregame.com中拉取大学足球比赛。

我尝试过使用不同元素的多个类I,甚至尝试使用pandas拉取,但无法获得整个表。有没有其他方法可以成功地抓取它?

代码语言:javascript
复制
from bs4 import BeautifulSoup
import lxml
import requests


header = {'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'}
pregame = requests.get('https://pregame.com/game-center/?d=1636174800000&t=0&l=2&a=0&s=AwayRot&m=false&b=undefined&o=Current&c=All&k=', 'r').text
soup = BeautifulSoup(pregame, 'lxml')

div = soup.find_all('p', class_ = 'pggc-col-data pggc-away')
print(div)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-03 09:04:38

您可能需要进行一些数据操作和连接,这取决于您想要的是什么。但是您可以从api获取json格式的数据并对其进行解析。

代码语言:javascript
复制
import requests
import pandas as pd

url = 'https://socket.pregame.com/api/gamecenter/bootstrap'

jsonData = requests.get(url).json()

data = {}
for each, v in jsonData.items():
    data[each] = pd.DataFrame(v)

for key, table in data.items():
    print(f'\n*** {key} ***')
    print(table.head(10).to_string())


leagues_dict = dict(zip(data['Leagues']['Name'],data['Leagues']['Id']))

final_data = {}
for k, v in leagues_dict.items():
    
    events_df = data['Events'][data['Events']['LeagueId'] == v].rename(columns={'Id':'EventId'})
    groups_df = data['Groups'][data['Groups']['LeagueId'] == v].rename(columns={'Id':'EventGroupId'})
    odds_df = data['Odds'][data['Odds']['LeagueId'] == v]
    scores_df = data['Scores']
    
    final_df = events_df.merge(groups_df.drop('LeagueId', axis=1), how='left', on='EventGroupId')
    final_df = final_df.merge(odds_df.drop('LeagueId', axis=1), how='right', on='EventId')
    
    if len(scores_df) > 0:
        final_df = final_df.merge(scores_df, how='left', on='EventId')
    
    final_data.update({k:final_df})

你可以随时将其写入csv并在excel中查看,如果这对你来说更容易使用的话。

票数 1
EN

Stack Overflow用户

发布于 2021-11-03 05:27:02

你遇到的问题是数据是通过javascript动态加载的。

你会想要检查一些像Selenium这样的东西来解决这个问题。下面是一个很好的概述:How to Scrape Data From JavaScript-Based Website Using Python, Selenium, and Headless Web Driver

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69819865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档