采集数据从非HTML文档
2017-12-01 本文已影响0人
游侠儿evil
网站通常以HTML格式提供大部分内容,但一些网站也可以提供其他格式的内容,如PDF或MS Word文档。 Visual Web Ripper只能处理HTML,并将下载其他类型的内容作为完整的文档。
有时,您可能希望从PDF或Word文档中提取文本和图像,但由于Visual Web Ripper 只理解HTML,它必须首先将这些文档转换为HTML。您需要为您希望看到的每一种类型的文档提供一个外部文档转换器。Visual Web Ripper 公共网站提供了一个你可以使用的开源程序的列表。为了方便,我们提供了第三方工具的下载链接。这些工具不是我们开发的,我们不支持这些工具。您必须确保您遵守与每个工具相关的许可证。
局限性 Limitations
大多数文件格式,包括PDF和Word文件,都不打算转换成HTML,因此转换后的HTML页面要比标准的HTML页面要困难得多。在许多情况下,您必须选择整个HTML页面,并使用正则表达式来提取目标内容。
安装文档转换器 Installing a Document Converter
Visual Web Ripper使用自定义脚本调用外部文档转换器,您可以配置该脚本以调用任何类型的程序。默认的脚本可以处理目前可以在Visual Web Ripper网站上下载的两个文档转换器。
安装PDF转HTML转换器
- Download the pdftohtml.zip file from the Visual Web Ripper website (http://www.visualwebripper.com/Resources/Tools.aspx)
- Extract the content of the zip file into the default Visual Web Ripper
Converters folder My Documents\Visual Web Ripper\Converters - The direct path to the document converter should now be
My Documents\Visual Web Ripper\Converters\pdftohtml\pdftohtml.exe
安装DocxToHTML转换器
- Download the docxtohtml.zip file from the Visual Web Ripper website (http://www.visualwebripper.com/Resources/Tools.aspx)
- Extract the content of the zip file into the default Visual Web Ripper
Converters folder My Documents\Visual Web Ripper\Converters - The direct path to the document converter should now be
My Documents\Visual Web Ripper\Converters\docxtohtml\docxtohtml.exe
使用文档转换器 Using a Document Converter
调用文档转换器的自定义脚本必须添加到链接模板中,链接模板必须选择要转换为HTML的文档的链接。您还必须将模板选项“下载和转换文档”设置为true。
默认的脚本可以处理PDF和docx文档,看起来如下:
using System;
using System.Data;
using mshtml;
using VisualWebRipper;
public class Script
{
//See help for a definition of WrDocumentConversionArguments.
public static bool ConvertDocument(WrDocumentConversionArguments args)
{
try
{
if(args.DocumentType == "pdf")
{
ScriptUtils.ExecuteCommandLine(@"Converters\pdftohtml\pdftohtml.exe",
args.DocumentFilePath, args.HtmlFilePath, "-noframes");
}
else if(args.DocumentType == "docx")
{
ScriptUtils.ExecuteCommandLine(@"Converters\docxtohtml\docxtohtml.exe",
args.DocumentFilePath, args.HtmlFilePath, "");
}
return true;
}
catch(Exception exp)
{
args.WriteDebug("Custom script error: " + exp.Message);
return false;
}
}
}
错误处理 Error Handling
个项目在运行时可能会遇到三种不同类型的错误。
- Critical errors. 如果嵌入式Internet Explorer web浏览器崩溃,就会出现一个严重的错误。这样的崩溃很少见,而且通常是由目标网站上的错误的JavaScript引起的。一个项目不能在一个关键错误之后继续,并且通常会停止 Visual Web Ripper 的应用程序。您不能自动处理这样的错误,但是您可以在崩溃的时候手动地继续一个项目,或者您可以手动地将数据导出到项目崩溃的点。
- Page load errors. 如果加载一个网页或者目标web服务器返回一个错误代码,页面加载错误就会发生。这是一个很常见的错误,这个错误通常不会阻止项目继续进行。如果在分页过程中出现了页面加载错误,则该项目可能无法继续,因为它无法访问下一个页面链接。如果在页面加载错误的情况下,项目选项重试错误可以被设置为重试一个项目。该项目只会重试未加载的页面。
- **Missing required elements. ** 内容元素可以被配置为需要的元素,如果页面中缺少这样的内容,则会被认为是页面加载错误。适用于页面加载错误的相同规则适用于缺少所需内容的页面,因此您可以配置一个项目来重试缺少所需内容的页面。