从页面源主体中提取json

时间:2019-03-22 14:55:20

标签: python selenium web-scraping

我正在尝试使用Python 3中的Selenium从下面的网页上抓取数据。

https://www.whoscored.com/Matches/1285051/Live/England-Premier-League-2018-2019-West-Ham-Huddersfield

如果将此URL视为页面源(对于Chrome用户:view-source:https://www.whoscored.com/Matches/1285051/Live/England-Premier-League-2018-2019-West-Ham-Huddersfield),则文本中包含一些JSON。我的目标是抓取第一个非常重要的JSON,它位于“ var matchCentreData”位。以下是一个摘要:

<script type="text/javascript">

var matchCentreData = {"playerIdNameDictionary":{"14244":"Pablo Zabaleta",
   "89998":"Manuel Lanzini","34693":"Marko Arnautovic","93026":"Felipe Anderson",
   "300359":"Issa Diop","122980"

我能够抓取整个页面源,但是,我在努力仅提取上面的JSON。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

这就是您所需要的。

page_json = driver.execute_script("return JSON.stringify(matchCentreData)")
# Do what you want with the json.

刚才为我工作。而且,如果您想同时使用此代码和HTML页面,则请执行此步骤,以及获取页面源代码的逻辑。有了它,就无需专门从页面源中提取它。

答案 1 :(得分:0)

您可能必须进行一些字符串操作。查看BeautifulSoup,我认为它将返回整个DOM,并且您可以做一些字符串工作来解析出您的相关数据。

编辑:我看到您实际上是在尝试从整个DOM字符串中仅提取json字符串。您尝试了什么子字符串/正则表达式?