如何使用python自动浏览?

时间:2009-08-18 09:23:10

标签: python browser-automation

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

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

16 个答案:

答案 0 :(得分:18)

selenium将完全按照你的意愿行事,它会处理javascript

答案 1 :(得分:16)

您还可以查看mechanize。它意味着处理“有状态的程序化网页浏览”(根据他们的网站)。

答案 2 :(得分:8)

所有答案都是旧的,我推荐,我是requests

的忠实粉丝

从主页:

  

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

     

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

答案 3 :(得分:7)

我认为最好的解决方案是requestsBeautifulSoup的混合,我只是想更新问题,以便可以不断更新。

答案 4 :(得分:3)

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

答案 5 :(得分: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

答案 6 :(得分:2)

Selenium2包含webdriver,其中包含python bindings并允许其使用无头htmlUnit驱动程序,或切换到firefox或chrome进行图形调试。

答案 7 :(得分:2)

不要忘记zope.testbrowser包装的mechanize

  

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

答案 8 :(得分:1)

我找到(目前正在实施)的最佳解决方案是: - 使用selenium webdriver在python中编写脚本 - PhantomJS无头浏览器(如果使用firefox,你会有一个GUI,会慢一些)

答案 9 :(得分:1)

如果您是Java开发人员,HTMLUNIT就是该软件包。 http://htmlunit.sourceforge.net/apidocs/index.html

答案 10 :(得分:1)

我发现iMacros Firefox plugin(免费)可以很好地运作。

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

import win32com.client
def Hello():
    w=win32com.client.Dispatch("imacros")
    w.iimInit("", 1)
    w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
    Hello()

答案 11 :(得分:0)

您可能想要urllib2。它可以处理HTTPS,cookie和身份验证等内容。您可能还希望BeautifulSoup帮助解析HTML页面。

答案 12 :(得分:0)

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

我非常喜欢twill(已经提出建议),这是由鼻子的一位作者开发的,它专门用于测试网站。

答案 13 :(得分:0)

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

http://pamie.sourceforge.net/

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

答案 14 :(得分:0)

httplib2 + beautifulsoup

使用firefox + firebug + httpreplay查看javascript从网站传入和从浏览器传递的内容。使用httplib2你可以通过post和get

基本上做同样的事情

答案 15 :(得分:0)

对于自动化,您肯定想结帐

  

网络机器人

它基于硒,以很少的代码提供了更多功能,例如自动查找元素以执行诸如click的操作,并根据您的参数进行输入。

它甚至适用于具有动态更改的类名和ID的网站。

这是doc:https://webbot.readthedocs.io/