Как извлечь длинную строку текста из некоторого JavaScript на веб-странице, используя BeautifulSoup? - PullRequest
2 голосов
/ 06 ноября 2010

Я пытаюсь написать скрипт, чтобы я мог зайти на сайт, но для этого мне нужно представить капчу.Единственный способ получить это прямое изображение капчи из URL-адреса - извлечь гигантское строковое имя 'challenge', но по какой-то причине я не смог сделать это с BeautifulSoup.Каков наилучший способ извлечь длинную строку?

var RecaptchaState = {
    site : '4LfjPgEA56AABAJExraAeYXdMbVhPcG__Hyv-URXF',
    challenge : '03AHJ_VusE_PgNB0vfBpD2h53o8uGMt1MeKi9bzhOTsjt0ze7SKmHVNe8uADceoU3JLPjpp8cJCVDGiYKo1ho-r1JcV19tm26doUHqevixJjH8SZ26i4EWbUOQLEuODf0Kt6JI0ZhtfiIaIXDg9MhUyDCEt_qxFWbSHA',
    is_incorrect : false,
    programming_error : '',
    error_message : '',
    server : 'http://www.google.com/recaptcha/api/',
    timeout : 18000
};

document.write('
<scr>
 ');
</scr>

Ответы [ 2 ]

0 голосов
/ 06 ноября 2010

Я бы просто использовал регулярное выражение. Не уверен насчет этого, но я не думаю, что beautifulsoup анализирует только JavaScript (x) html:

challenge = re.search(r"challenge *: *'(\S+)'", x).group(1)

Дает:

03AHJ_VusE_PgNB0vfBpD2h53o8uGMt1MeKi9bzhOTsjt0ze7SKmHVNe8uADceoU3JLPjpp8cJCVDGiYKo1ho-r1JcV19tm26doUHqevixJjH8SZ26i4EWbUOQLEuODf0Kt6JI0ZhtfiIaIXDg9MhUyDCEt_qxFWbSHA '

0 голосов
/ 06 ноября 2010

BeautifulSoup не анализирует JS, вам нужно сделать это с помощью регулярного выражения или аналогичного.

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