Как правильно запарсить данные в

Добавить комментарий

1 Ответы

Python Опубликовано 20.09.2020
Все что удалось найти:

Еще может заинтересовать:
0

На самом деле BeautifulSoup здесь причём — с его помощью Вы можете найти нужный script элемент в HTML дереве. Вот уже после того, как элемент найден и его текст на руках, Вам нужно будет решить, каким образом пропарсить JS код и вытащить значение нужной переменной.

Один, достаточно практичный и простой, вариант, это регулярное выражение. Причём, Вы можете использовать одно и тоже скомпилированное регулярное выражение для нахождения элемента, и для получения data объекта в виде строки, которую мы можете пропустить через json.loads(), чтобы получить питоновскую структуру данных (в данном примере ниже — словарь).

Рабочий пример:

import json
import re
 
from bs4 import BeautifulSoup
 
 
data = """
<html>
    <head>
        <script type="text/javascript">
            data = {"url":" haha.com", "id": "12345", "name": "haha"};
            function() { // something here });
        </script>
    </head>
</html>"""
 
soup = BeautifulSoup(data, "html.parser")
 
pattern = re.compile(r"data = (\{.*?\});$", re.MULTILINE | re.DOTALL)
script = soup.find("script", text=pattern)
 
if script:
    obj = pattern.search(script.text).group(1)
    obj = json.loads(obj)
    print(obj)

На выходе получите:

{'url': ' haha.com', 'id': '12345', 'name': 'haha'}

Также смотрите вот этой StackOverflow post, где разобрана похожая задача — помимо регулярных выражений, там есть пример использования JS парсера slimit:

Добавить комментарий
Напишите ваш ответ.
Регистрация Войдите