在开始使用Visual Web Ripper之前,您需要理解底层的模板(Template)概念。大多数web抓取工具都使用宏风格(Macro-Style)处理,并遵循一系列命令。Visual Web Ripper是非常不同的。将一个数据提取项目看作是一个连续的命令序列,这将导致一个设计不佳的项目。
在Visual Web Ripper中,模板(Template)定义了如何从一种类型的网页中提取数据。例如,如果您是从产品目录中提取数据,那么产品细节页面将由一个模板定义。在一个目录中列出所有产品的网页将由另一个模板来定义。每个模板都可以有一个操作来描述web浏览器应该如何导航到模板定义的页面。例如,定义产品细节页面的模板将会有一个动作,告诉web浏览器单击一个产品详细信息链接,以导航到产品详细信息页面。如果产品细节链接在页面上列出了一个类别中的所有产品,那么定义product details页面的模板必须是定义产品列表页面的模板的子模板。
Visual Web Ripper 项目定义了如何从整个网站中提取内容,而不仅仅是一个网页。项目包括模板和内容元素,其中模板定义了如何在网站中导航,内容元素定义了从网页中提取的信息。
模板和内容的层次结构类似于文件系统中的文件夹和文件。模板可以包含子模板和内容,但是内容不能包含任何子项。
一种特殊类型的模板,“页面区域(PageArea)” 模板,不打开一个新网页,而是定义当前网页的一个子区域。该模板中的所有内容元素都从定义的子区域中选择信息。
模板常常与列表选项结合使用,以选择链接列表。如果一个模板选择一个元素列表,我们将其称为列表模板(List Template),尽管列表选项只是一个模板的属性。如果一个模板选择了一个链接列表,那么Visual Web Ripper就会遍历链接,并为每个链接处理模板。在设计一个选择链接列表的模板时,设计人员将导航到列表中的第一个链接。您可能更喜欢使用不同的URL来设计模板,这样您就可以在打开模板和设计器之前选择特定的链接。
Visual Web Ripper 用户界面也被称为项目设计器,用于创建或修改数据提取项目。
项目设计人员可以用于以下任务:- 创建和修改数据提取项目- 运行数据采集项目- 查看已采集的网页数据- 任务计划数据采集项目
工具栏(The Toolbar)
工具栏包含了应用程序特性的快捷方式。两个最重要的快捷方式是运行项目和目标数据源工具栏按钮。Run Project工具栏按钮用于运行当前的数据采集项目。目标数据源工具栏按钮用于设置您想要保存提取的数据的位置。
项目导航栏(The Project Navigation Bar)
项目导航栏用于在数据采集项目中导航。一个数据采集项目通常由模板和子模板组成,您可以使用项目导航栏在模板之间轻松导航。项目导航栏还有一个后退按钮,让您可以轻松地导航到父模板。
项目模板与内容窗口(The Project Templates and Content Window)
这个窗口列出了当前打开模板中的所有子模板和内容元素。该窗口有两个选项卡,内容和模板,用于在内容和模板视图之间进行切换。您可以使用New按钮在content选项卡激活时添加新的内容元素,或者在模板选项卡激活时添加一个新模板。
在这个窗口中列出的所有内容元素和模板都有一个绿色、黄色或红色的状态图标。
- 绿色状态图标表示内容或模板不存在问题。- 黄色状态图标表示内容元素或模板已被配置为在网页上选择元素不存在。- 红色状态图标表示内容元素或模板已配置为在不存在的网页中选择所需的元素。
通过单击与每个内容元素和模板相关联的edit按钮,您可以编辑内容元素或模板的选择或其他选项。
您可以通过单击与每个模板相关联的open按钮打开一个模板。当您打开一个具有相关操作的模板,例如链接模板的链接模板时,web浏览器可能会导航到一个新的位置。
您可以通过使用Edit菜单或右键单击内容元素或模板,并从上下文菜单中选择move/copy来移动、复制、插入和删除内容元素和模板。
模板与内容选项窗口(The Template and Content Options Window)
选项窗口用于为当前正在编辑的内容元素或模板设置选项。可用的选项取决于内容元素的类型或正在编辑的模板。
即使没有内容元素或模板被编辑,您也可以设置选项。然后,这些选项将应用于您添加的下一个新内容元素或模板。
捕获窗口(The Capture Window)
捕获窗口显示web浏览器中当前所选元素的内容。这个窗口有两个标签:内容(content)和HTML。内容选项卡显示由Visual Web Rippere采集的内容。HTML选项卡显示所选元素的HTML表示。
如果web浏览器中所选的元素是表单字段,则捕捉窗口用于指定Visual Web Rippere 在提交web表单时应该使用的输入值。
如果您正在选择一个元素列表,那么捕获窗口的状态栏将显示在web浏览器中选择的元素的数量。
内嵌网页浏览器(The Web Browser)
Web浏览器用于选择HTML元素。当您将鼠标悬停在一个HTML元素上时,它的背景将变为黄色。当你点击一个HTML元素时,它会被选中,它的背景会变成蓝色。
有时候选择一个特定的HTML元素是很困难的,因为它的可见区域非常小,或者很难看到一个HTML元素的结束和另一个开始。Visual Web Rippere有一些工具可以帮助你做出选择。您可以使用工具栏按钮展开选择(-)或限制(+)选择来选择父或子HTML元素,或者您可以右键单击一个HTML元素,并从上下文菜单中选择select元素来查看一个相邻的HTML元素的列表。您还可以使用树形(├)视图工具栏按钮来获得当前网页的树视图。
根据目标网站的特点,数据提取很容易或困难。我们建议你从一个简单的网站开始。一个简单的目标网站是一个相对静态的网站,使用有限的Javascript和AJAX回调。
在为一个特定的网站创建一个数据提取项目之前,在标准版本的Internet Explorer中熟悉这个网站。这将帮助您理解Visual Web Rippere如何在网站上导航以提取所需的数据。
首先,您需要确定一个好的开始URL。有时最好的开始URL只是站点的开始URL,但是通常需要的数据在子页面上。您应该在Internet Explorer中导航到最好的开始URL,然后复制URL,以便在Visual Web Rippere中使用。注意,有些网站允许导航而不改变可见的URL。在这种情况下,你可能没有一个直接指向你喜欢的起始网页的起始URL,而是需要在你的数据提取项目中添加模板来导航到那个网页。
一旦您拥有了开始的URL,您就可以通过遵循这些通用的步骤开始创建您的数据采集项目。
步骤一 —— 加载开始URL
打开Visual Web Rippere,并将开始URL复制到地址栏。Visual Web Rippere载入开始网页。
步骤二 —— 添加模板与内容
现在可以开始向项目中添加模板和内容元素了。下面我们列出了一些常见的场景。
场景1-导航到您喜欢的开始页面
如果你不能为你喜欢的开始页面获得一个直接的开始URL,你可能需要Visual Web Rippere跟随一个链接来导航到网页。
要在web浏览器中选择链接,单击链接并添加一个新的链接模板。单击Open按钮打开链接模板。web浏览器将导航到新页面。
现在您可以开始向新的链接模板添加子模板和内容元素了。当Visual Web Rippere运行这个项目时,它将打开链接模板,然后在处理任何子模板和内容元素之前导航到新的网页。
- 浏览一个网站,了解更多关于使用链接模板浏览网站的信息。- 有关链接模板的更多信息,请参见链接模板。
场景2-提交Web表单
您可能需要提交一个web表单,可能是提交一个搜索查询或一个登录表单。
单击web浏览器中的第一个表单字段,然后添加一个新的FormField内容元素。使用捕获窗口来输入您希望Visual Web Rippere在表单字段提交Web表单时输入的值。对您希望看到的所有表单字段重复这个过程。
现在添加提交web表单的FormSubmit模板。单击web浏览器中的表单提交按钮,然后添加一个FormSubmit模板。单击Open按钮打开FormSubmit模板。web浏览器将提交表单并导航到一个新页面。
现在您可以开始向新的FormSubmit模板添加子模板和内容元素了。当Visual Web Rippere运行这个项目时,它将打开FormSubmit模板,然后在处理任何子模板和内容元素之前提交Web表单。
- 请参阅提交Web表单以获得关于Web表单的更多信息。- 有关FormSubmit模板的更多信息,请参见FormSubmit模板。- 有关FormField内容元素的更多信息,请参阅FormField内容。
场景3——遍历链接列表
有时一个网页会显示一个链接列表,你想要跟随列表中的每个链接。要做到这一点,您需要选择所有的链接,然后添加一个链接模板。
要选择所有链接,选择第一个链接,然后右键单击第二个链接,并从上下文菜单中选择Create List。单击Open按钮打开链接模板。web浏览器将导航到列表中的第一个链接。如果您希望在打开模板时看到Visual Web Rippere能够导航到不同的链接,只需在打开模板之前点击Web浏览器中的目标链接。当Visual Web Rippere运行这个项目时,它将打开并处理这个模板的模板。
场景4-提取内容
一旦网页浏览器显示你想要提取内容的网页,你就需要为你想要提取的网页内容元素添加内容元素。
要添加内容元素,单击web浏览器中适当的HTML元素,然后单击New按钮以添加内容元素。
有关提取内容元素的更多信息,请参阅提取内容。
场景5——遍历搜索结果
如果web浏览器显示搜索结果,并且您想为搜索结果中的每一行提取内容,那么您需要创建一个列表选择,它将选择搜索结果中的所有行。
要选择所有的行,选择web浏览器中的第一行,然后右键单击第二行中的任何地方,并从上下文菜单中选择Create List。一旦您创建了列表选择,添加一个新的PageArea模板并单击Open按钮打开该模板。
现在您已经进入了一个PageArea模板,您可以只在页面区域内的web浏览器中选择那些内容元素。要添加一个内容元素,单击web浏览器中的一个行中的HTML元素,然后单击New按钮以添加内容元素。当您在一行中单击HTML元素时,将自动为搜索结果中的每一行自动重复该选项。
- 有关创建列表选择的更多信息,请参见创建列表。- 有关PageArea模板的更多信息,请参阅PageArea模板。
场景6-从细节页面中提取内容
考虑一下web浏览器显示搜索结果的情况,您已经添加了一个PageArea模板来迭代搜索结果行。您已经打开了PageArea模板,并可能添加了一些内容元素。每个搜索结果行都有一个链接,它打开一个包含更多信息的详细页面,并且您希望从这个细节页面中提取更多内容。
在一个搜索结果行中选择链接,并添加一个链接模板。Visual Web Rippere会自动选择所有搜索结果行中的链接,因为您在一个PageArea列表模板中。
打开链接模板,并开始为您想从细节页面中提取的所有内容添加内容元素。
场景7-在搜索结果中处理所有页面
在前面的场景中,考虑一个web浏览器显示搜索结果的情况,并且您已经创建了一个PageArea模板来迭代搜索结果行。搜索结果包含许多行,这些行显示在多个web页面上。页面导航链接用于在搜索结果页面中导航。
大多数使用页面导航的网页都有一个下一页链接,在导航栏中打开下一页,如果是这样的话,在web浏览器中选择下一个页面链接,并添加一个pageNavigation导航模板。必须将pageNavigation导航模板添加到与PageArea模板相同的位置,该模板在搜索结果中迭代。如果打开PageArea模板,Visual Web Rippere不会打开模板,但是Web浏览器将导航到搜索结果的下一页。
步骤3——设置目标数据源
在向项目添加模板和内容元素之后,是时候决定保存提取的数据的位置了。如果您不选择导出目标,Visual Web Rippere将把提取的数据导出为Excel格式。单击工具栏按钮数据导出来更改导出目标。如果将提取的数据导出到文件格式,比如Excel,默认的输出文件夹是 我的文档Visual Web RipperOutput[PROJECT_NAME]
步骤4-运行数据采集项目
现在是运行您的数据采集项目的时候了。单击工具栏按钮运行项目,以弹出下面的屏幕。
第一次运行一个项目时,总是检查视图浏览器和调试选项。这允许您观察Visual Web Rippere是如何提取数据的,这使得纠正数据提取项目中的任何问题变得更加容易。
在本例中,我们将从澳大利亚黄页中提取公司数据。网站看起来是这样的。
按照以下步骤创建数据提取项目。
步骤1-输入开始URL
搜索表单在网站的主页上,所以最好的开始网址是www.yellowpages.com.au。我们在Visual Web Rippere地址栏中输入开始URL并加载网站。
步骤2-配置搜索表单
要配置一个提交web表单的项目,我们需要为每个表单字段添加FormField内容元素和表单提交按钮的FormSubmit模板。
- 请参阅提交Web表单以获得关于Web表单的更多信息。- 有关FormSubmit模板的更多信息,请参见FormSubmit模板。- 有关FormField内容的更多信息,请参阅FormField内容。
首先,我们为Find按钮添加FormSubmit模板。
1.单击捕获的元素窗口中的Template选项卡。这确保了我们使用的是模板而不是内容元素。2.单击web浏览器中的Find按钮。3.单击New按钮或右键单击并从上下文菜单中选择新模板。
1. 单击捕获的元素窗口中的Content选项卡。这确保了我们在处理内容元素,而不是模板。2. 单击web浏览器中的什么输入字段。3.单击New按钮或右键单击并从上下文菜单中选择新内容。4. 在捕获窗口中输入输入值。我们需要两次提交web表单(一次用于搜索词酒店,一次用于苹果商店),所以我们在捕获窗口中输入搜索词。5. Visual Web Rippere自动将FormField输入值保存到输出数据中。如果您不想保存输入值,您可以重新设置save Content选项。
1. 单击web浏览器中的Where输入字段。2. 单击New按钮或右键单击并从上下文菜单中选择新内容。3. 在捕获窗口中输入输入值。我们只需要在新南威尔士州进行搜索,所以我们只在捕获窗口中输入新南威尔士(NSW)的单一值。
步骤3——遍历搜索结果
现在我们在搜索结果页面上,我们想要提取结果中列出的每个公司的数据。当您想从web元素列表中提取数据时,通常需要使用PageArea模板来遍历该列表。
我们通过以下步骤创建一个PageArea列表模板:1. 选择列表中的第一行。2. 右键单击第二行中的任何地方,并从上下文菜单中选择Create List。3. 单击New按钮,或右键单击上下文菜单中的新模板。
步骤4-在PageArea模板中提取内容
我们将在搜索结果中提取所有公司名称。我们在一个PageArea列表模板中,它选择所有的搜索结果行,因此在一个行中所做的所有选择将被自动地应用到搜索结果中的所有其他行。按照以下步骤配置项目以提取公司名称:
1. 单击第一行中的公司名称。所有其他行中的公司名称将被自动选择。2. 单击New按钮或右键单击并从上下文菜单中选择新内容。3.标题是一个链接,因此Visual Web Rippere自动将内容类型设置为链接,但是我们想要提取文本,因此我们将内容类型更改为元素。
按照以下步骤添加一个链接模板,该模板将导航到详细页面:
1. 单击捕获的元素窗口中的Template选项卡。这确保了我们使用的是模板而不是内容元素。2. 在第一个搜索结果行中单击公司标题。我们在一个PageArea列表模板中,它选择了所有的搜索结果行,因此,在一行中所做的所有选择都将自动应用到搜索结果中的所有行。3. 单击New按钮或右键单击并从上下文菜单中选择新模板。4. 确保模板类型设置为链接,而不是PageArea。5. 有时,当您想要遵循一个链接列表时,开始新的Web浏览器选项是很有用的。通常情况下,Visual Web Ripper会跟随一个链接并处理下一页,然后再返回到先前的页面,以便跟踪列表中的下一个链接。如果你激活了新的Web浏览器选项,Visual Web Ripper将会打开一个新的Web浏览器的链接,所以它不需要回到以前的网页来跟踪下一个链接。这样可以节省时间,使您的数据提取项目运行得更快。
步骤5-从细节页面中提取内容
现在我们在一个公司的细节页面上,我们想要配置这个项目从这个网页中提取一些内容。详细信息页面有两个关于我们和产品和服务的信息标签。每个标签后面的信息总是在网页上,但是网页会隐藏和显示信息,这取决于你选择的信息标签。单击选项卡不会触发新的页面加载或AJAX操作,因此我们不需要一个链接模板来处理选项卡。Visual Web Ripper不关心内容是可见的还是隐藏的。它可以提取隐藏的内容和可见的内容,因此我们可以简单地点击显示感兴趣的信息的选项卡,然后开始标记我们想要提取的内容。
产品和服务选项卡显示一个包含关于酒店信息的表格。我们想要提取酒店的评级。搜索结果中的所有酒店都有不同的信息显示在桌子上;对于一家酒店来说,第一张表可能包含酒店的评级,但对于另一家酒店来说,第一行可能包含完全不同的信息,比如设施。简单地提取第一行的内容并不总是提供酒店的评级。我们想要获得酒店的评级,如果酒店的评级没有被列出来,我们就不需要。
在提取酒店评级内容时,遵循以下步骤使用文本过滤器:
1. 确保你在一个有酒店等级的细节页面上。如果在搜索结果中没有显示酒店的等级,回到以前的模板,选择不同的酒店,然后再打开链接模板。2. 在web浏览器中选择酒店等级。3. 右键单击评级文本,选择Filter,然后选择必须从上下文菜单中获得文本评级。4. 单击New按钮或右键单击并从上下文菜单中选择新内容。
我们将添加一个pagenavigation 导航模板,它将使用网页导航栏中的下一个页面链接来查找搜索结果中的所有页面。
1. 返回到PageArea模板所在的模板。您可以使用Visual Web开膛手导航窗格中的Back按钮来移动到先前的模板。2. 单击捕获的元素窗口中的Template选项卡。这确保了我们使用的是模板而不是内容。3. 单击web浏览器中的下一个页面链接。要确保选择链接而不是箭头图像,右键单击箭头图像,并从上下文菜单中选择最近的链接。4. 单击New按钮或右键单击并从上下文菜单中选择新模板。5. 确保模板类型设置为pagenavigation导航。
进阶注意事项
您运行这个数据提取项目的时间较长时,您会注意到它对前几个搜索结果页面的效果很好,但是在随后的页面中,它突然开始失效。调试窗口将显示表明不再找到PageArea模板的消息。
如果一个网站上有很多不同的页面布局,那么网页抓取就变得困难了。显示第一页搜索结果的网页与显示第三页搜索结果的网页很相似,但是有细微的差别对数据提取项目有很大的影响。
为了识别问题,我们需要导航到搜索结果的第三个页面。我们这样做是通过打开pagenavigation导航航模板三次。您将注意到,在搜索结果的第三页上,PageArea模板的状态图标是黄色的,而不是绿色的。这表明,PageArea的选择不再有效。
要理解发生了什么,在web浏览器中重新创建PageArea选项。然后将新PageArea的XPath与旧的PageArea的XPath进行比较。
//UL[@id='localListings']/LI[@class='gold mappableListing listingContainer omnitureListing']//UL[@id='localListings']/LI[@class='gold_entry mappableListing listingContainer omnitureListing']
搜索结果行的类属性不是相同的,所以第一个XPath不能在第3页上工作,第二个XPath不能在第1页上工作。
解决这个问题有两种方法。您可以单击Set XPath手动按钮手动编辑选择XPath并删除类属性,因此您最终得到了这个XPath:
//UL[@id='localListings']/LI
或者,您可以使用列表选项来创建PageArea列表模板,而不是上下文菜单。按照以下步骤使用列表选项创建PageArea模板:
1. 在web浏览器中选择第一行搜索结果。2. 单击列表选项选项卡。3. 检查Create list选项。4. 单击OK按钮以更新web浏览器中的选择。
//UL[@id='localListings']/LI