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

时间:2012-09-05 16:48:57

标签: python ajax web-scraping web-crawler fiddler

我正在测试一个主要基于ajax的Web应用程序,该应用程序使用jsp。一切都是在应用程序端动态创建/分配的。我正在尝试创建某种必须执行以下操作的爬虫/刮刀:

  1. “点击”给定网页上的每个可用按钮,下拉列表等
  2. 对于每个请求,记录客户端/服务器的交互
  3. 一旦单个网页按下了所有按钮(哈?),   广度优先搜索从#2
  4. 的第一条记录开始
  5. 继续,直到所有记录都与之交互过一次。
  6. 我很容易使用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)?并且,是否有人知道如何从某些录制软件加载请求?

    作为旁注,所有这一切所需的时间并不重要,如果需要数月,即使这样也没关系。

    感谢。

2 个答案:

答案 0 :(得分:1)

使用像autoit这样的工具(它有python绑定......)或者我更喜欢的工具叫做SIKULI(http://sikuli.org/)(它没有python绑定......但它自己的脚本很酷的语言)

答案 1 :(得分:0)

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

有什么理由需要基于GUI吗?你可以在GUI之外更容易的时间。

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