好的,我正在为我的大学编程课程做一个自我指导的学期项目。我的计划是抓取《守望先锋联赛》网站的不同部分以获取统计数据等,将它们保存在数据库中,然后使用不和谐机器人从该数据库中提取数据。但是,我遇到了网站本身的问题。这是排行榜页面 html 的屏幕截图。
正如您所看到的,它非常复杂,并且很难使用重复的 div 和 body 标签进行导航,而且我很确定它是动态创建的。我的教授建议我找到一种方法来隔离表格顶部的排名标题,然后访问父行,然后遍历兄弟行,将团队名称、位置等数据暂时提取到字典中。我在网上找不到任何对我有帮助的东西,大多数网站没有提供足够的信息或已经过时。
这是我到目前为止所拥有的:
from bs4 import BeautifulSoup
import requests
import link
import re
import pprint
url = 'https://overwatchleague.com/en-us/standings'
response = requests.get(url).text
page = BeautifulSoup(response, features='html.parser')
# for stat in page.find(string=re.compile("rank")):
# statObject = {
# 'standing' : stat.find(string=re.compile, attrs={'class' : 'standings-table-v2styles__TableCellContent-sc-3q1or9-6 jxEkss'}).text.encode('utf-8')
# }
# print(page.find_all('span', re.compile("rank")))
# for tag in page.find_all(re.compile("rank")):
# print(tag.name)
print(page.find(string=re.compile('rank')))
"""
# locate branch with the rank header,
# move up to the parent branch
# iterate through all the siblings and
# save the data to objects
"""
评论都是失败的尝试,并且没有任何返回。唯一没有注释掉的行返回一个巨大的 json,其中包含许多不必要的信息,其中确实包括我想要解析并用于我的项目的内容。我已将其链接为谷歌文档,并突出显示了我想要获取的内容。
我现在不太确定还有什么办法可以解决这个问题。我考虑过使用selenium,但是我缺乏javascript知识,所以如果可能的话我会尽量避免它。即使您可以就如何解决此问题提出一些建议,我也会非常感激。
谢谢
富国沪深
相关分类