#python #regex #web-scraping #beautifulsoup
Вопрос:
<script type="text/javascript">var csrfMagicToken = "sid:bf8be784734837a64a47fcc30b9df99,162591180";var csrfMagicName = "__csrf_magic";</script>
Приведенный выше тег скрипта взят с веб-страницы.
script = soup.find_all('script')[5]
Используя приведенную выше строку кода,я смог извлечь тег скрипта, который мне нужен, но мне нужно извлечь значения переменных в скрипте python, я использую BeautifulSoup в своем скрипте python для извлечения данных.
Комментарии:
1. Пожалуйста, назовите URL-адрес?
Ответ №1:
Вы могли бы использовать
(?:var|let)s (w )s*=s*"([^"] )"
Смотрите демонстрацию на regex101.com.
Примечание: Однако в целом использование регулярных выражений в коде имеет несколько недостатков. Например, с учетом вышеизложенного, sth. подобное let x = -10;
не будет совпадать, но будет полностью допустимым JavaScript
кодом. Кроме того, одинарные кавычки не поддерживаются (пока) — это полностью зависит от вашего фактического ввода.
Тем не менее, вы могли бы пойти на:
(?:var|let)s
(?P<key>w )s*=s*
(['"])?(?(2)(?P<value1>. ?)2|(?P<value2>[^;] ))
Смотрите еще одну демонстрацию на regex101.com.
Это по-прежнему оставляет вас беспомощными против экранированных кавычек, таких как let x = "some " string";
объявления переменных в комментариях или против них. В общем, отдайте предпочтение решению синтаксического анализатора.
Комментарии:
1. Спасибо за попытку, я преобразовал «скрипт» в строку и использовал нарезку строк,это сработало для меня