Improving Performance and Reliability
重要的是要理解,当提取大量数据时,web抓取的复杂性会显著增加。执行某些操作所需的时间可能会花很长时间,整个web抓取过程变得不切实际。Web抓取在本质上是不可靠的,而Web抓取项目运行的时间越长,出现故障的几率就越高,并中断了Web抓取过程。
这个主题列出了您可以采取的几个步骤来提高性能和可靠性。性能调优不是针对新手用户的,如果您没有它的经验,您可能无法在这个主题中实现建议。
改变内部数据库 Changing the Internal Database
在运行项目时将所有提取的数据保存到内部数据库中。默认的内部数据库是一个SQLite文件数据库,而文件数据库的性能不如实际数据库,比如SQL Server或MySQL。根据您的系统和数据提取项目,通过切换到真正的数据库服务器,您可以在某些操作上提高到10倍的性能。
如果您还没有现有的数据库服务器,我们建议您将内部数据库更改为SQL Server Express。SQL Server Express是一个来自微软的免费数据库服务器,可以在一个数据库中包含10GB的数据。您可以从这个URL下载SQL Server express:
http://www.microsoft.com/sqlserver/en/us/editions/express.aspx
您需要阅读SQL Server Express文档,了解如何安装和操作数据库服务器。
一旦您安装了SQL Server Express并添加了一个数据库,您就可以从项目选项屏幕上的Project Data options选项卡中更改内部数据库。
[图片上传失败...(image-36714c-1512430751384)]
将图像写入磁盘而不是数据库 Writing Images to Disk instead of Database
默认情况下,在内部数据库中保存所有图像和文档。这很方便,因为所有提取的数据都保存在一个数据库文件中,但是通过将所有图像和文档写入磁盘,只保存数据库中的文件路径,就可以获得更好的性能。
您可以配置一个项目,将图像和文档从项目选项屏幕上的project Data options选项卡中保存到磁盘。
使用WebCrawler代理
默认情况下,使用web浏览器代理提取数据。web浏览器代理使用Internet Explorer的一个实例访问一个网站,因此如果目标站点在Internet Explorer中工作,您通常可以使用web浏览器代理从网站中提取数据。
如果您使用Internet Explorer浏览web,您可能会遇到一些问题,比如挂起网站或程序崩溃。这可能很少发生在每年一次,所以在正常使用Internet Explorer时可能不会出现问题。当Visual Web Ripper使用Internet Explorer浏览一个网站时,它可能比你在一年内访问更多的网页,因此稳定性问题被大大放大了。
网站不稳定的主要来源是JavaScript。网站开发人员可以使用JavaScript实现网站上的动态特性,但JavaScript错误可能导致内存泄漏、挂起网站甚至程序崩溃。
web爬虫代理忽略了所有的JavaScript,因此它通常比web浏览器代理更可靠。一个web浏览器代理只能一次加载一个web页面,但是一个web爬虫代理可以同时加载多个web页面,因此一个web爬虫代理也比一个web浏览器代理快得多。web爬虫代理可以比web浏览器代理快100倍。
有时,web浏览器代理需要处理站点的某些部分,而web爬虫代理可以处理站点的其他部分。一个单一的项目可以被配置为同时使用WebBrowser和WebCrawler 代理。
使用多个浏览器
web浏览器代理使用一个单一的web浏览器从一个网站中提取数据。如果代理需要遵循一个链接列表,它会单击第一个链接,然后导航回到链接列表,以便导航到列表中的第二个链接。如果代理程序在一个新的web浏览器中打开每个链接,它就不需要在每次处理链接时重新导航到链接列表。
您可以通过设置模板选项启动新的web浏览器来配置链接和FormSubmit模板来在Start new web browser中打开一个页面。
重要: 不是所有的链接和表单提交都可以定向到一个新的web浏览器。使用AJAX的链接和表单通常不能在新的web浏览器中打开。
修改Web浏览器的行为
web浏览器代理使用的web浏览器可以修改,以提高某些场景的性能。例如,您可以配置web浏览器来停止加载图像和帧。
重要:一些JavaScript依赖于图像和帧,如果web浏览器执行JavaScript,可能会开始泄漏内存,但不会加载图像和帧。