29

假设,我需要在特定网站上执行一组程序,例如填写一些表格,单击提交按钮,将数据发送回服务器,接收响应,再次根据响应做一些事情并将数据发送回服务器的网站。我知道 python 中有一个 webbrowser 模块,但我想在不调用任何 web 浏览器的情况下执行此操作。它必须是一个纯脚本。

python中是否有可用的模块,可以帮助我做到这一点?
谢谢

4

15 回答 15

19

selenium 会做你想要的,它处理 javascript

于 2010-08-15T10:19:57.933 回答
18

你也可以看看mechanize。它旨在处理“有状态的程序化网页浏览”(根据他们的网站)。

于 2009-08-18T09:43:36.323 回答
8

所有的答案都是旧的,我推荐,我是请求的忠实粉丝

从主页:

Python 的标准 urllib2 模块提供了您需要的大部分 HTTP 功能,但 API 被彻底破坏了。它是为不同的时间和不同的网络而构建的。执行最简单的任务需要大量工作(甚至方法覆盖)。

事情不应该是这样的。不是在 Python 中。

于 2013-10-08T19:11:27.790 回答
8

我认为最好的解决方案是requestsBeautifulSoup的组合,我只是想更新问题,以便它可以保持更新。

于 2013-10-29T18:55:48.353 回答
3

Selenium http://www.seleniumhq.org/对我来说是最好的解决方案。您可以使用 python、java 或任何您喜欢的编程语言轻松对其进行编码。和转换成程序的简单模拟。

于 2013-11-27T14:36:59.983 回答
2

有很多内置的 python 模块可以帮助解决这个问题。例如urllibhtmllib

如果你改变你接近它的方式,问题会更简单。您说您要“填写一些表格,单击提交按钮,将数据发送回服务器,接收响应”,这听起来像是一个四个阶段的过程。

实际上,您需要做的是将一些数据发布到网络服务器并获得响应。

这很简单:

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()

(示例取自 urllib 文档)。

您对响应的处理取决于 HTML 的复杂程度以及您想要对其执行的操作。您可能会使用一两个正则表达式来解析它,或者您可以使用 htmllib.HTMLParser 类,或者可能是更高级的更灵活的解析器,例如Beautiful Soup

于 2009-08-18T09:38:11.857 回答
2

Selenium2包含 webdriver,它具有python 绑定,并允许使用无头 htmlUnit 驱动程序,或切换到 firefox 或 chrome 进行图形调试。

于 2011-06-09T15:14:40.717 回答
2

不要忘记zope.testbrowser它是mechanize的包装器。

zope.testbrowser 提供了一个易于使用的可编程网络浏览器,特别注重测试。

于 2014-01-15T06:46:06.670 回答
1

我发现iMacros Firefox 插件(它是免费的)运行良好。

它可以通过 Python 使用 Windows COM 对象接口实现自动化。这是来自http://wiki.imacros.net/Python的一些示例代码。它需要Python Windows 扩展

import win32com.client
def Hello():
    w=win32com.client.Dispatch("imacros")
    w.iimInit("", 1)
    w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
    Hello()
于 2015-02-10T19:48:20.497 回答
1

我发现(并且目前正在实施)的最佳解决方案是: - 使用 selenium webdriver 在 python 中的脚本 - PhantomJS 无头浏览器(如果使用 firefox,您将有一个 GUI,并且会更慢)

于 2013-12-19T10:48:59.460 回答
0

您可能需要urllib2。它可以处理诸如 HTTPS、cookie 和身份验证之类的事情。您可能还希望BeautifulSoup帮助解析 HTML 页面。

于 2009-08-18T09:31:19.420 回答
0

你可以看看上一个意大利语 pycon (pdf) 中的这些幻灯片:作者列出了大部分用于在 python 中进行抓取和自动浏览的库。所以你可以看看它。

我非常喜欢斜纹布(已经有人建议了),它是由鼻子的一位作者开发的,专门用于测试网站。

于 2009-08-18T09:44:37.490 回答
0

特定于 Internet Explorer,但相当不错:

http://pamie.sourceforge.net/

与 urllib/BeautifulSoup 相比的优势在于它也执行 Javascript,因为它使用 IE。

于 2009-08-18T10:36:51.003 回答
0

httplib2 + 美丽的汤

使用 firefox + firebug + httpreplay 查看 javascript 从网站传入和传出浏览器的内容。使用 httplib2 你基本上可以通过 post 和 get 做同样的事情

于 2010-10-21T14:45:39.360 回答
0

对于自动化,你肯定想看看

网络机器人

它基于 selenium,并提供更多功能,只需很少的代码,例如自动查找元素以执行 click 等操作,根据您的参数键入。

它甚至适用于类名和 id 动态变化的站点。

这是文档:https ://webbot.readthedocs.io/

于 2018-06-30T07:21:46.367 回答