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工具中表单数据中显示的所有内容。发生了什么事?
答案 0 :(得分:2)
使用Firebug并搜索qsstamp
会将匹配的结果指向:Here
您可以看到:j.createHiddenInputs({qsstamp:u},v)
这意味着qsstamp
是由JavaScript动态生成的。
requests
不会运行JavaScript(因为它的作用是获取该页面的HTML。)您可能希望使用dryscape
之类的内容或使用Selenium
之类的模拟浏览器。