【问题标题】:Python Mechanize : Page not loading fullyPython Mechanize:页面未完全加载
【发布时间】:2011-07-03 19:19:47
【问题描述】:

我正在使用的代码 sn-p ::

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) 的目的是为页面加载提供时间,但猜测这不起作用。

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

【问题讨论】:

  • 我知道这可以使用 fb api 完成,但我想尝试使用 mechanize

标签: python facebook mechanize


【解决方案1】:

您确定您通过了正确的登录名吗?

我已经用我的登录名运行了你的代码,它对我来说很好。

我要补充的唯一一点是,您不需要其中的 time.sleep(50) — 机械化块,直到它接收到所有内容。

向我们提供您的完整代码示例和输出(包括print response2),让您的问题更有用。

【讨论】:

  • 所以一旦登录 - 注意 fb 使用 ajax 加载其内容 - mechanize 无法查看共享框或除顶部导航栏以外的任何其他内容
  • Facebook 使用 Ajax 加载其内容 — 如果您启用了 JavaScript,可以。我们没有。你试过改变你的UA吗?告诉 Facebook 你是 Firefox 会让它认为你是 Firefox。把它改成非浏览器的东西
【解决方案2】:

你不应该去爬 www.facebook.com。

获得您所追求的正确方法是使用 Facebook 平台作为@infrared 笔记。

【讨论】:

  • 这个问题对于所有使用 ajax 和使用 mechanize 的网站都很普遍。我已经使用了 fb api,但如果可能的话就尝试一下。
  • Mechanize 没有 JavaScript 解释器,所以它不会运行 JS 或 Ajax
猜你喜欢
  • 2014-03-25
  • 2014-01-17
  • 2016-06-10
  • 2013-03-14
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多