简短:如何使用 python Mechanize 执行/模拟 javascript 重定向?
location.href="http://www.site2.com/";
我制作了一个带有 mechanize 模块的 python 脚本,它在页面中查找链接并遵循它。
问题出在一个特定的网站上,当我这样做时
br.follow_link("http://www.address1.com")
他将我重定向到这个简单的页面:
<script language="JavaScript">{
location.href="http://www.site2.com/";
self.focus();
}</script>
现在,如果我这样做:
br = mechanize.Browser(factory=mechanize.RobustFactory())
... #other code
br.follow_link("http://www.address1.com")
for link in br.links():
br.follow_link(link)
print link
它不打印任何东西,这意味着该页面中没有链接。但是如果我手动解析页面并执行:
br.open("http://www.site2.com")
Site2 无法识别我来自“www.address1.com”,并且该脚本无法正常工作!
抱歉,如果这只是一个新手问题,请提前感谢您!
ps 我有 br.set_handle_referer(True)
编辑:更多信息:检查与 Fiddler2 的链接,它看起来像:
GET http://www.site2.com/ HTTP/1.1 主机:www.site2.com 连接:keep-alive 用户代理:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome /22.0.1229.94 Safari/537.4 Accept: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 Referer: http://www.address1.com Accept-Encoding: gzip,deflate ,sdch Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q =0.3 Cookie:PHPSESSID=6e161axxxxxxxxxxx;用户=我的用户名;
通过=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;ip=79.xx.xx.xx;
代理=a220243a8b8f83de64c6204a5ef7b6eb; __utma=154746788.943755841.1348303404.1350232016.1350241320.43;__utmb=154746788.12.10.1350241320; __utmc=154999999; __utmz=154746788.134999998.99.6.utmcsr=google|utmccn=(有机)|utmcmd=有机|utmctr=%something%something%
所以这似乎是一个cookie问题?