kolumbou
@kolumbou
python, html, c#

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

Доброго времени суток.

Используя следующую строку я получаю ResultSet:

abc = soup.findAll('script', text = re.compile('Data'))


Сам получаемый ResultSet:

[<script type="text/javascript">
data = {"url":"haha.com", "id":"12345", "name":"haha",};
... function() {abc.devg....})'
...


Из всего этого цель извлечь параметры в data, а именно допустим значения url и id.
Как это сделать идей нет. Пробовал различные варианты парсинга с помощью супа и то что приведено выше - самый близкий к нужному вариант.

Буду благодарен за любые советы.
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
Ba1t
@Ba1t
Опробовать на 100% не успел, разрядился ноут. Дописываю с телефона.
import re
import json
from ast import literal_eval

pattern = re.compile(r'data[= ]+(?P<dict>.*);')
raw = pattern.search(s).groupdict()

# if валидый JSON
j = json.loads(raw['dict'])
print(j['id'], j['url'])
# запасной вариант
# elif похоже на валидный python-dict
d = literal_eval(raw['dict'])
print(d['id'], d['url'])

upd: ответ дополнен
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
суп - лажа
юзай lxml

и конкретизируй задачи - поиск подстрок или что?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы