2014-10-06 151 views

回答

0

我已经做了很长一段时间的网络抓取/内容提取。

对我来说,最好的方法是编写一个Chrome内容扩展并使用他们的API自动化浏览器。这要求你知道Javascript和HTML。在我最近的一个项目中,我使用了一个带有几个可编辑div的背景页面来配置scraping会话。我在背景页面上有一些按钮来启动这个过程。后台页面加载一个JS脚本,用于监听按钮的点击事件。

当其中一个按钮被点击时,我用chrome.tab.create添加一个新的选项卡用于刮会话。后台js还定义了一些chrome.tabs.onUpdated.addListener,以在标签url包含特定页面/域名时注入内容脚本。

内容脚本然后执行抓取作业,例如用jquery,正则表达式等选择一些元素,最后使用chrome.runtime.sendmessage发送带有对象的消息到背景JS。后台JS脚本使用chrome.runtime.onMessage.addListener监听消息,并基于正在提取的内容进行操作。

该扩展还通过点击例如下一页链接自动化网络数据库。

我添加了一个时间设置来控制每分钟打开的链接数量/链接数量,以便有意识地减慢访问速度,避免过多的抓取。

最后,结果将通过AJAX调用上传到数据库,并通过PHP页面插入到MySQL中。

扩展在下一次运行时,会将数据库中已存在的键/链接与另一个AJAX调用进行比较,并确保仅提取新信息。

我也使用Firefox构建了类似上述的扩展,但对我而言,最好的和最简单的解决方案是Chrome/Chromium内容扩展。

0

如果你想跳过代码,并正在寻找一个简单的网页抓取/ ETL应用软件,我会建议Foxtrot。使用起来很简单,而且不需要编码。我使用它来从某些政府网站上获取数据,并将其转储到Excel电子表格中用于报告目的。