如何使用BeautifulSoup从网页上的某些JavaScript中提取长字符串?

时间:2010-11-06 14:46:52

标签: javascript python beautifulsoup

我正在尝试编写一个脚本,以便我可以登录到一个网站,但为了做到这一点,我需要提供验证码。从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 :(得分:0)

BeautifulSoup不解析js,你需要使用正则表达式或类似的方法。

答案 1 :(得分:0)

我只是使用正则表达式。不确定这一点,但我不认为beautifulsoup解析javascript - only(x)html:

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

给予:

'03AHJ_VusE_PgNB0vfBpD2h53o8uGMt1MeKi9bzhOTsjt0ze7SKmHVNe8uADceoU3JLPjpp8cJCVDGiYKo1ho-r1JcV19tm26doUHqevixJjH8SZ26i4EWbUOQLEuODf0Kt6JI0ZhtfiIaIXDg9MhUyDCEt_qxFWbSHA'