我正在尝试使用Python 3中的Selenium从下面的网页上抓取数据。
如果将此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。任何帮助将不胜感激!
答案 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字符串。您尝试了什么子字符串/正则表达式?