基于gui的脚本,与ajax/http捕获交互,用于web爬网/抓取



我正在测试一个主要基于ajax的web应用程序,该应用程序由jsp提供。所有内容都是在应用程序端动态创建/分配的。我正在尝试创建某种爬行器/刮刀,它必须执行以下操作:

  1. "点击"给定网页上所有可用的按钮、下拉列表等
  2. 对于每个请求,记录客户端/服务器的交互
  3. 一旦一个网页的所有按钮都被按下(哈?),广度优先搜索,从#2的第一条记录开始
  4. 继续,直到所有记录都已交互一次

我可以很容易地使用python点击,尽管python不是必需的(我知道Java有一些东西可能很容易工作):

def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

我查阅了诸如fiddler之类的录音软件:http://www.fiddler2.com/fiddler2/

我不知道如何记录互动,但不知道如何更换屏幕。例如,在A页上,按钮B移动到C页,我想点击B,但停留在A上(这是一个过于简单的情况)

我完全理解广度优先搜索,尽管我不知道如何使用任何脚本/编程语言加载网页(来自#1)。

那么,有人知道如何记录互动吗(也许可以把它放在队列中以方便BFS)?还有,有人知道如何从一些录音软件加载请求吗?

顺便说一句,完成这一切所需的时间并不重要,如果需要几个月,即使这样也没关系。

谢谢。

使用autoit这样的工具(它确实有python绑定…),或者我更喜欢的一个名为SIKULI的工具(http://sikuli.org/)(它没有python绑定……但它自己的脚本语言很酷)

selenium具有python绑定(http://seleniumhq.org/);你可以用它。

为什么这需要基于GUI?在GUI之外,您会有一段轻松得多的时间。

你需要在每个页面上保存一个可能的链接的数据存储,以及它们的去向。使用基于gui的控件,你可以在新的浏览器窗口中打开链接,但这可能会失控。

最新更新