使用BeautifulSoup 4.8.2从网站抓取表格

fnehfneh

我正在尝试从网站上抓取一张桌子,但效果不佳。我正在使用Python 3.7.4和bs4 4.8.2。另外,我不精通HTML,因此如果我误解某些术语,请原谅。

我正在尝试使用“ id ='track_1_box'”抓取父类下的表类,在此处可以看到我试图提取的信息是字符串“ title ='Canada'”和“ Cole”,但现在我什至无法访问该表。

到目前为止,这是我尝试过的。

import requests
import numpy as np
from bs4 import BeautifulSoup
from csv import writer

#%%
url = 'https://www.mkleaderboards.com/mkw/charts/world/nonsc/12'
response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

table = soup.find("table", class_='table')

但是,“表”变量返回一个空列表。我也试图通过访问父类

soup.find_all(class_ = 'panel inline_box track_box') 

哪个返回

[<div class="panel inline_box track_box" id="track_1_box">
 </div>, <div class="panel inline_box track_box" id="track_2_box">
 </div>, <div class="panel inline_box track_box" id="track_3_box">
 </div>, <div class="panel inline_box track_box" id="track_4_box">
 </div>]

但不是四个div类的“内部”。

我是在做错什么,还是网站上有什么在阻止我抓桌子?

安德烈·凯斯利(Andrej Kesely)

数据是通过JavaScript加载的,但是您可以使用requests模块获取数据:

import json
import requests


url = 'https://www.mkleaderboards.com/mkw/charts/world/nonsc/12'
api_url = 'https://www.mkleaderboards.com/api/charts/mkw_nonsc_world/{num}'

cup_id = int(url.split('/')[-1])

# box 1:
box1 = requests.get(api_url.format(num=cup_id*4+1)).json()
# box 2:
box2 = requests.get(api_url.format(num=cup_id*4+2)).json()
# box 3:
box3 = requests.get(api_url.format(num=cup_id*4+3)).json()
# box 4:
box4 = requests.get(api_url.format(num=cup_id*4+4)).json()

# uncomment this to print data to screen:
# print(json.dumps(box1, indent=4))
# print(json.dumps(box2, indent=4))
# print(json.dumps(box3, indent=4))
# print(json.dumps(box4, indent=4))

# print box1 to screen:
for d in box1['data']:
    print('{:<30} {:<20} {}'.format(d['name'], d['country_name'], d['score_formatted']))

印刷品:

Cole                           Canada               1:08.774
Kasey                          United States        1:08.881
SwareJonge                     Netherlands          1:09.036
Sosis                          United States        1:09.050
Paul M.                        United States        1:09.066
Sword                          United Kingdom       1:09.118
Gustav                         Sweden               1:09.136
Guy                            United States        1:09.143
Glaceon                        Japan                1:09.157
Liam [MKW]                     United Kingdom       1:09.171

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用BeautifulSoup4进行数据抓取的问题

使用BeautifulSoup网站抓取IMDb页面

如何使用python和beautifulsoup4循环抓取网站中多个页面的数据

无法使用BeautifulSoup4抓取网站

使用BeautifulSoup抓取网站时阅读页码

使用BeautifulSoup抓取网站后缺少文本

使用BeautifulSoup抓取网站时显示符号

如何使用beautifulsoup在h4中抓取数据?

使用BeautifulSoup网站抓取构建不一致的表格[gurufocus网站]

使用BeautifulSoup从网站获取表格

使用beautifulsoup从网站抓取表格,最后出现错误

使用BeautifulSoup抓取特定网站

使用python 2.7和beautifulsoup 4进行网站抓取

使用 BeautifulSoup 4 在 whoscall.in 上抓取问题

使用beautifulsoup4后如何分离抓取结果?

使用 BeautifulSoup 从网站抓取数据的问题

使用 BeautifulSoup 从网站导入表格

在python 3.6中使用beautifulsoup4抓取网站以获取产品信息时

无法使用beautifulsoup抓取日本网站

使用 rvest 从网站上抓取表格

如何使用 R 从 PHP 网站抓取表格?

使用beautifulsoup4从网站提取数据并解析成csv

Python beautifulsoup,抓取网站中的表格

使用 Beautifulsoup 4 进行网页抓取 - 提取联系信息

如何使用BeautifulSoup从python网站中未加载的选项卡中抓取表格数据

使用 BeautifulSoup 和 Selenium 的网页抓取网站不会检测网页中的表格元素

使用 python 抓取网站 - BeautifulSoup

使用 BeautifulSoup 抓取表格

使用 Python 抓取 HTML 中的特定元素:BeautifulSoup4