【问题标题】:gui-based scripting that interacts with ajax/http captures for web crawling/scraping与 ajax/http 交互的基于 gui 的脚本,用于网络爬取/抓取
【发布时间】:2012-09-05 16:48:57
【问题描述】:

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

  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)?还有,有人知道如何从某些录音软件加载请求吗?

附带说明,完成所有这些工作所花费的时间并不重要,如果需要几个月,即使这样也没关系。

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      有什么理由需要基于 GUI 的吗?在 GUI 之外,您会更轻松。

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

      【讨论】:

      • 这最终将成为安全套件测试的一部分,我们将重点放在可见按钮上。此外,我通常编写爬虫的方式(比如说寻找 href)是不兼容的,因为大多数“按钮”不是超链接,而是根据网页上的其他信息动态创建的。由于它是在 jsp 中提供的,因此按钮重定向到不是不同网址但具有不同内容的页面。坦率地说,这是一种真正的痛苦。
      • 呃。好吧,硒可能是你最好的选择。它是一个完全开源的网络自动化工具,可以在大多数浏览器/操作系统上运行,并且有很好的 python 绑定。
      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多