Извлечение JSON из основной части исходного кода страницы - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь очистить данные с веб-страницы ниже, используя Selenium в Python 3:

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 ]

3 голосов
/ 22 марта 2019

Это все, что вам нужно.

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

У меня сработало только сейчас. И если вам нужно как это, так и HTML страницы, сделайте этот шаг вместе с логикой захвата источника вашей страницы. Нет необходимости извлекать его специально из исходного кода страницы, когда у вас есть это.

0 голосов
/ 22 марта 2019

Возможно, вам придется выполнить некоторые манипуляции со строками. Проверьте BeautifulSoup , я думаю, что он вернет весь DOM, и вы можете сделать некоторую строковую работу, чтобы проанализировать ваши соответствующие данные.

Редактировать: Я вижу, что вы на самом деле пытаетесь извлечь только строку json из всей строки DOM. Какие подстроки / регулярные выражения вы пробовали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...