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")])
我正在处理请求,并且已经阅读了这里的几个线程,所以我决定自己尝试一下。
我被这句话难住了。 "qsstamp":soup.find("input",{"name":"qsstamp"})["value"]
因为它返回空从而导致错误。
但是看看 chrome 开发者工具,这个 "qsstamp"
填充了我在这里缺少什么?
有效负载
是 Chrome 开发工具上表单数据中显示的所有内容。那么这是怎么回事?
最佳答案
使用 Firebug 并搜索 qsstamp
会将匹配的结果定向到:Here
您可以看到:j.createHiddenInputs({qsstamp:u},v)
这意味着 qsstamp
是由 JavaScript 动态生成的。
requests
不会运行 JavaScript(因为它的作用是获取该页面的 HTML。)您可能需要使用 dryscape
之类的东西或使用类似 的模拟浏览器> Selenium
。
关于python - Facebook 登录使用请求错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643288/