Facebook登录使用请求错误

时间:2015-09-18 03:19:21

标签: python request

    for (String s: test ) {
        for (char c : s.toCharArray()) {
            System.out.println(s);  
        }
    }

我正在处理请求,并在此处阅读了几个关于它的线程,所以我决定自己尝试一下。

我被这条线难住了。 import requests from bs4 import BeautifulSoup a = requests.Session() soup = BeautifulSoup(a.get("https://www.facebook.com/").content) payload = { "lsd":soup.find("input",{"name":"lsd"})["value"], "email":"my_email", "pass":"my_password", "persistent":"1", "default_persistent":"1", "timezone":"300", "lgnrnd":soup.find("input",{"name":"lgnrnd"})["value"], "lgndim":soup.find("input",{"name":"lgndim"})["value"], "lgnjs":soup.find("input",{"name":"lgnjs"})["value"], "locale":"en_US", "qsstamp":soup.find("input",{"name":"qsstamp"})["value"] } soup = BeautifulSoup(a.post("https://www.facebook.com/",data = payload).content) print([i.text for i in soup.find_all("a")]) 因为它返回空,从而导致错误。

然而,在查看chrome开发人员工具时,此"qsstamp":soup.find("input",{"name":"qsstamp"})["value"]填充了我在这里缺少的内容吗?

"qsstamp"是chrome dev工具中表单数据中显示的所有内容。发生了什么事?

1 个答案:

答案 0 :(得分:2)

使用Firebug并搜索qsstamp会将匹配的结果指向:Here

您可以看到:j.createHiddenInputs({qsstamp:u},v) 这意味着qsstamp是由JavaScript动态生成的。

requests不会运行JavaScript(因为它的作用是获取该页面的HTML。)您可能希望使用dryscape之类的内容或使用Selenium之类的模拟浏览器。