【问题标题】:Extracting a json out of the main body of page source从页面源的主体中提取一个json
【发布时间】:2019-08-13 14:26:23
【问题描述】:

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

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

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

<script type="text/javascript">

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

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

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    这就是你所需要的。

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

    刚刚为我工作。如果你想要这个和页面 html,那么执行这一步,以及你的页面源抓取逻辑。当你有这个时,不需要专门从页面源中提取它。

    【讨论】:

      【解决方案2】:

      您可能需要进行一些字符串操作。查看BeautifulSoup,我认为它会返回整个DOM,你可以做一些字符串工作来解析你的相关数据。

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

      【讨论】:

      • 是的,我想我将不得不走正则表达式路线 - 当 json 只是坐在那里时,这似乎是一个相对冗长的过程!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2020-02-11
      • 2019-10-16
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多