【问题标题】:How to simulate a AJAX call (XHR) with python and mechanize如何使用 python 和 mechanize 模拟 AJAX 调用 (XHR)
【发布时间】:2013-07-20 11:31:36
【问题描述】:

我正在做一个自动完成在线作业的项目。 我可以登录、查找练习,甚至可以使用 mechanize 填写表格。 我发现提交按钮触发了一个javascript函数,我搜索了解决方案。很多答案都包括“模拟 XHR”。但他们都没有谈及细节。 我不知道这个屏幕帽是否有帮助。 http://i.stack.imgur.com/0g83g.png 谢谢

【问题讨论】:

    标签: python xmlhttprequest web-scraping screen-scraping mechanize


    【解决方案1】:

    如果您想评估 javascript,我建议您使用 Selenium。它将打开一个浏览器,然后您可以从 python 向它发送文本。

    首先,安装 Selenium:https://pypi.python.org/pypi/selenium

    然后从这里下载 chrome 驱动程序:https://code.google.com/p/chromedriver/downloads/list

    将二进制文件放在与您正在编写的 python 脚本相同的文件夹中。 (或将其添加到路径或其他任何内容,更多信息在这里:https://code.google.com/p/selenium/wiki/ChromeDriver

    之后以下示例应该可以工作:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    driver.get("http://www.python.org")
    assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.send_keys("selenium")
    elem.send_keys(Keys.RETURN)
    assert "Google" in driver.title
    driver.close()
    

    更多信息here (这个例子也来自那里)

    【讨论】:

      【解决方案2】:

      xhr 与常规请求相同。以相同的方式进行处理,然后处理响应。

      【讨论】:

      • resp = br.open(clockurl) resp.readlines() # [' \n', '\n', '\n'] 我只能收到前 3 个响应状态。处于第四状态的实际响应无法得到响应。如何获得第 4 个状态的实际响应?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2020-11-24
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 2011-02-06
      • 2023-03-31
      相关资源
      最近更新 更多