Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python beautifulsoup-拉列表/字典_Python_Beautifulsoup - Fatal编程技术网

python beautifulsoup-拉列表/字典

python beautifulsoup-拉列表/字典,python,beautifulsoup,Python,Beautifulsoup,我仍然在学习如何利用美丽的乌苏。我已经成功地使用了标签和一些不从深度图表表中提取数据的东西 但现在我正试图拉满名册。我似乎不太明白它的标签。但我确实注意到,在源代码中,该信息包含在一个字典列表中,如图所示: vm.Roster = [{"PlayerId":16236,"Name":"Cody Parkey","Team":"CHI","Position":"K","FantasyPosition":"K","Height":"6\u00270\"","Weight":189,"Number":

我仍然在学习如何利用美丽的乌苏。我已经成功地使用了标签和一些不从深度图表表中提取数据的东西

但现在我正试图拉满名册。我似乎不太明白它的标签。但我确实注意到,在源代码中,该信息包含在一个字典列表中,如图所示:

vm.Roster = [{"PlayerId":16236,"Name":"Cody Parkey","Team":"CHI","Position":"K","FantasyPosition":"K","Height":"6\u00270\"","Weight":189,"Number":1,"CurrentStatus":"Healthy","CurrentStatusCol

...

什么是一个优雅的方式拉满名册表?我的想法是,如果我能抓取那个列表/字典,我就可以转换成一个数据帧。但不确定如何获取,或者是否有更好的方法将该表放在python的数据帧中。

一个可能的解决方案是使用正则表达式提取原始JSON对象,然后可以使用JSON库加载该对象

from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
import json

html_page = urlopen("https://fantasydata.com/nfl-stats/team-details/CHI")
soup = BeautifulSoup(html_page, "html.parser")
raw_data = re.search(r"vm.Roster = (\[.*\])", soup.text).group(1)
data = json.loads(raw_data)

print(data[0]["Name"])  # Cody Parkey

需要注意的是,以这种方式从该特定网站上抓取数据很可能违反了他们的服务条款,在某些司法管辖区甚至可能是非法的。

这实际上是一个很好的观点,并且没有想到这一点。我有他们的付费订阅,所以我甚至没有想到,我只是想练习使用beautifulsoup。但是thanx提醒你/awerness@chitown88如果您有订阅,那么(通过API访问)获取数据的方法很可能比刮取更好,但是,使用刮取总是很有趣的:)是的。我用api来做我需要的东西。它是超快速,简单,方便。但可以说,我只是在“引擎盖下”挖掘,学到了很多东西。的确如此fun@chitown88事实上:)