2011-07-03 24 views
1

我使用的代码片段::Python的机械化:页面没有加载完全

br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

response = br.open('http://www.facebook.com') 
br.select_form(nr=0) 
br['email'] = USERNAME 
br['pass'] = PASSWORD 
response2 = br.submit() 

assert br.viewing_html() 
time.sleep(50) 


for form in br.forms(): 
    print form 

嗯,我试着写了response2.read()到文件,看看发生了什么事。只有顶部导航栏已加载。 time.sleep(50)的意图是为页面加载提供时间,但猜测不起作用。

这样做的正确方法是什么?

+0

您是否尝试过使用FB API? – infrared

+0

我知道这可以使用fb api来完成,但是我想尝试使用机械化 –

回答

0

你确定你传递了正确的登录名吗?

我用我的登录运行你的代码,它对我来说工作正常。

我要补充的唯一的事情就是你不需要在那里有time.sleep(50)-Mechanize块,直到它接收到所有的内容。

请给予我们您的完整代码示例输出(包括print response2)你的问题更加有用。

+0

所以一旦登录 - 注意fb使用ajax加载其内容 - 机械化不能够查看共享框或其他任何其他内容比顶部导航栏 –

+0

* Facebook使用Ajax *加载其内容 - 如果您有JavaScript,是的。我们没有。你有没有尝试改变你的UA?告诉Facebook你是Firefox会让它认为你是Firefox。将其更改为非浏览器 –

0

你不应该刮www.facebook.com。

正确的方法是使用Facebook平台作为@infrared笔记。

+0

那么这个问题对于所有使用ajax并且使用机械化的站点来说都是普遍的。我已经使用fb api,但只是尝试可能。 –

+0

Mechanize没有JavaScript解释器,但它不会运行JS或Ajax –