Python 使用JS过滤器美化SOUP4输出

Python 使用JS过滤器美化SOUP4输出,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我是新手。我正试图用BeautifulSoup4从网站上搜集一些体育统计数据。下面的脚本确实输出了一个表,但它实际上并不是浏览器中显示的特定数据(浏览器中显示的数据是我正在寻找的数据-一个赛季的进球得分者数据,而不是所有时间记录) #导入库 从urllib.request导入urlopen 从bs4导入BeautifulSoup 导入请求 #指定url 统计页https://www.premierleague.com/stats/top/players/goals?se=79' #查询网站并将h

我是新手。我正试图用BeautifulSoup4从网站上搜集一些体育统计数据。下面的脚本确实输出了一个表,但它实际上并不是浏览器中显示的特定数据(浏览器中显示的数据是我正在寻找的数据-一个赛季的进球得分者数据,而不是所有时间记录)

#导入库
从urllib.request导入urlopen
从bs4导入BeautifulSoup
导入请求
#指定url
统计页https://www.premierleague.com/stats/top/players/goals?se=79'
#查询网站并将html返回到变量“page”
page=urlopen(统计页面)
#使用Beauty soup解析html并存储在变量'soup'中`
soup=BeautifulSoup(页面“html.parser”)
#取出of name并获取其值
stats=soup.find('tbody',attrs={'class':'statsTableContainer'})
name=stats.text.strip()
印刷品(名称)
似乎在幕后进行了一些数据过滤,但我不确定如何使用BeautifulSoup4过滤输出。似乎在HTML之上发生了一些Javascript过滤

我已经尝试确定这个特定的过滤器是什么,看起来过滤是在这里完成的

<div class="current" data-dropdown-current="FOOTBALL_COMPSEASON" role="button" tabindex="0" aria-expanded="false" aria-labelledby="dd-FOOTBALL_COMPSEASON" data-listen-keypress="true" data-listen-click="true">2017/18</div>
2017/18
我已经阅读了下面的链接,但我不完全确定如何将其应用到我的答案中(这里还是初学者)

我尝试过安装、导入和应用不同的解析器,但总是出现相同的错误(找不到树生成器)。关于如何从似乎使用JS过滤器的网站上提取数据,有什么建议吗


谢谢

在这些情况下,使用浏览器的开发人员工具跟踪网络请求通常很有用,因为数据通常使用AJAX检索,然后使用JS显示在浏览器中

在这种情况下,您要查找的数据似乎可以在以下位置访问:

https://footballapi.pulselive.com/football/stats/ranked/players/goals?page=0&pageSize=20&compSeasons=79&comps=1&compCodeForActivePlayer=EN_PR&altIds=true
它有一个标准的JSON格式,因此您应该能够以最小的工作量解析和提取数据

但是,请注意,此端点要求将
Origin
HTTP头设置为
https://www.premierleague.com
以满足您的要求

https://footballapi.pulselive.com/football/stats/ranked/players/goals?page=0&pageSize=20&compSeasons=79&comps=1&compCodeForActivePlayer=EN_PR&altIds=true