Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 超快速屏幕刮削技术?_Html_Screen Scraping - Fatal编程技术网

Html 超快速屏幕刮削技术?

Html 超快速屏幕刮削技术?,html,screen-scraping,Html,Screen Scraping,我经常发现自己需要为内部目的做一些简单的屏幕抓取(例如,我使用的第三方服务仅通过HTML发布报告)。我现在至少有两三个这样的病例。我可以使用ApacheHttpClient创建所有必要的屏幕抓取代码,但这需要一段时间。以下是我通常的流程: 打开网站上的Charles Proxy,看看发生了什么 开始使用ApacheHttpClient编写一些java代码,处理cookie和多个请求 使用Jericho HTML处理HTML的解析 我希望我能快速“记录我的会话”,然后参数化不同会话的内容。想象一下

我经常发现自己需要为内部目的做一些简单的屏幕抓取(例如,我使用的第三方服务仅通过HTML发布报告)。我现在至少有两三个这样的病例。我可以使用ApacheHttpClient创建所有必要的屏幕抓取代码,但这需要一段时间。以下是我通常的流程:

  • 打开网站上的Charles Proxy,看看发生了什么
  • 开始使用ApacheHttpClient编写一些java代码,处理cookie和多个请求
  • 使用Jericho HTML处理HTML的解析
  • 我希望我能快速“记录我的会话”,然后参数化不同会话的内容。想象一下,使用Charles获取所有HTTP请求,然后参数化相关的查询字符串或post参数。瞧,我有一个可重用的http脚本


    已经有什么东西可以做到这一点了吗?我记得当我在一家大公司工作时,我们曾使用过一种工具,Mercury Interactive称之为Load Runner,它基本上有一种很好的方法来记录http会话并使其可重用(用于测试目的)。不幸的是,这个工具非常昂贵。

    你没有提到你想用它做什么;一种解决方案是,如果让web浏览器重复您的操作是一种可接受的解决方案,则只需使用Selenium之类的工具“编写”web浏览器的脚本。您可以使用来记录所做的操作,然后更改参数。

    是一种用Java编写的可编写脚本的无头浏览器。我们将它用于一些故障严重、复杂的网页,它通常做得很好

    为了进一步简化,您可以在Jython中运行它。由此产生的程序读起来更像是一个人如何使用浏览器的记录,而不是艰苦的工作

    我希望我能快速“记录我的会话”,然后参数化不同会话的内容


    如果您有VisualStudioTestEdition,它的web测试功能正是这样做的。如果你不使用VS或者想要一个独立的工具,我已经非常成功地使用了。它不仅仅是web,它还提供windows应用程序和java

    Selenium将是我的第一选择,因为IDE可以让您通过“录制”会话来轻松完成很多事情。但是,如果您对它提供的内容不满意,您也可以使用调用的Python模块以编程方式浏览网站。

    我使用DominInspector手动检查感兴趣的网站,以参数化其结构。然后是简单的ApacheHttpClient和使用此参数化结构的手工解析器。基本上,我可以提取任何网站的任何信息自动与一个小的参数调整。。这与SAX解析器的工作原理类似,您只需告诉它您希望从哪个标记序列开始抓取数据。例如,谷歌有相当标准的搜索结果格式。。因此,您只需运行到第三个出现的“tab”,并从第一个“div”开始获取文本,直到“/div”结束。

    Internet Explorer支持浏览器辅助对象(BHO)。他们可以访问IE'HWND(窗口句柄),很容易从那里刮取像素。
    IWebBrowser2
    COM界面还允许您访问HTTP请求,您可以通过
    IWebBrowser2::document=IHTMLDocument/IHTMLDocument2/IHTMLDocument3

    使用FireFox,通过对插件和增强功能的强大支持,可以实现大部分内容,然而,这并不意味着运行“headless”,而是真正的脚本浏览器。此外,我似乎还记得曾读到过谷歌的chrome浏览器使用类似的技术进行自动回归测试。

    我个人无法保证这一点,但有一个免费的firefox插件:DejaClick 前几天我安装了它,并用它进行了一些补救性的录制、回放和脚本编辑活动。这使他们在没有太多学习曲线的情况下成功了。如果您的最终目标是在web浏览器中显示某些内容,那么这就足够了

    它们提供web事务监控服务,这意味着您可以将脚本导出用于其他用途,但它们可能过于专有,无法在web浏览器/其付费服务之外使用


    Python和Perl都有一个名为Mechanize(WWW::Mechanize for Perl)的模块,该模块使浏览器行为编程(填写表单、处理cookie等)变得简单


    因此,Python+BeautifulSoup(伟大的html/xml解析器)+mechanize(浏览器功能)=超级简单/快速刮刀

    感谢您的回答。我认为所有这些都是非常有价值的,将帮助其他面临同样困境的人。我决定尝试Twill,因为它看起来是一种非常简单的语言,而且Python中的Twill是跨平台的。建议使用的许多工具似乎也很好——尽管其中一些工具似乎是Windows专用的,而其他一些工具的学习曲线似乎更陡峭?