Как распарсить JS средствами BeautifulSoup из bs4

324
07 июня 2017, 05:19

Распарсил HTML

from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(content, 'lxml')  # content is a html page
info = soup.findAll('script')

Получил JS с необходимыми данными, примерно такого содержания:

window.check = function(...) {
    ...
}
new.userData['old_info'] = '[{"name":"name", "sex":"sex", "limit":"limit},
                             {"name":"name", "sex":"sex", "limit":"limit},
                             {"name":"name", "sex":"sex", "limit":"limit}]'

Могу ли я достать инфо из переменной new.userData['old_info'] средствами bs? В доках по парсингу JS ничего не нашел. Подскажите подходящее решение, заранее благодарен.

Answer 1

Например так:

html = """
window.check = function(...) {
    ...
}
new.userData['old_info'] = '[{"name":"name", "sex":"sex", "limit":"limit"}]'
"""
import re
match = re.search(r"new.userData\['old_info'\] = '(.+)'", html)
if match:
    import ast
    old_info = ast.literal_eval(match.group(1))
    print(old_info)  # [{'name': 'name', 'limit': 'limit', 'sex': 'sex'}]
    print(old_info[0]['name'])  # name

Вместо ast можно попробовать json, только апострофы нужно будет на кавычки заменить

READ ALSO
Как создать timeline для сайта

Как создать timeline для сайта

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

341
Не работает переход по URL вида 'page-'

Не работает переход по URL вида 'page-'

Здравствуйте! Не работает URL для перехода по страницамСама пагинация рабочая, но почему-то URL вида "page-" не воспринимается базой данных

335
Angular и модульный backend

Angular и модульный backend

Буквально пару дней изучаю angular, вроде все логично, но задался вопросом - а как собственно это использовать совместно с backend частью ? К примеру...

323
Как отобразить меню компонента Joomla на всех view

Как отобразить меню компонента Joomla на всех view

Пишу для себя компонент Joomla с названием YpayФайловая структура как на скриншоте https://i

337