快速入门

理解概念


在开始使用Visual Web Ripper之前,您需要理解底层的模板(Template)概念。大多数web抓取工具都使用宏风格(Macro-Style)处理,并遵循一系列命令。Visual Web Ripper是非常不同的。将一个数据提取项目看作是一个连续的命令序列,这将导致一个设计不佳的项目。

在Visual Web Ripper中,模板(Template)定义了如何从一种类型的网页中提取数据。例如,如果您是从产品目录中提取数据,那么产品细节页面将由一个模板定义。在一个目录中列出所有产品的网页将由另一个模板来定义。每个模板都可以有一个操作来描述web浏览器应该如何导航到模板定义的页面。例如,定义产品细节页面的模板将会有一个动作,告诉web浏览器单击一个产品详细信息链接,以导航到产品详细信息页面。如果产品细节链接在页面上列出了一个类别中的所有产品,那么定义product details页面的模板必须是定义产品列表页面的模板的子模板。

项目(Projects),模板( Templates)和内容(Content)

Visual Web Ripper 项目定义了如何从整个网站中提取内容,而不仅仅是一个网页。项目包括模板和内容元素,其中模板定义了如何在网站中导航内容元素定义了从网页中提取的信息

模板和内容的层次结构类似于文件系统中的文件夹和文件。模板可以包含子模板和内容,但是内容不能包含任何子项。


模板与内容的层次结构视图

模板和内容通常在网页上选择一个或多个HTML元素。模板在打开模板时,通常会对所选的HTML元素执行操作,例如单击链接或表单提交按钮。当你打开一个模板时,通常你也会打开一个新的网页,这个模板中的内容元素定义了如何从新网页中提取信息。

一种特殊类型的模板,“页面区域(PageArea)” 模板,不打开一个新网页,而是定义当前网页的一个子区域。该模板中的所有内容元素都从定义的子区域中选择信息。

模板常常与列表选项结合使用,以选择链接列表。如果一个模板选择一个元素列表,我们将其称为列表模板(List Template),尽管列表选项只是一个模板的属性。如果一个模板选择了一个链接列表,那么Visual Web Ripper就会遍历链接,并为每个链接处理模板。在设计一个选择链接列表的模板时,设计人员将导航到列表中的第一个链接。您可能更喜欢使用不同的URL来设计模板,这样您就可以在打开模板和设计器之前选择特定的链接。

用户界面


Visual Web Ripper 用户界面也被称为项目设计器,用于创建或修改数据提取项目。

项目设计人员可以用于以下任务:
- 创建和修改数据提取项目
- 运行数据采集项目
- 查看已采集的网页数据
- 任务计划数据采集项目


GUI

地址栏(The Address Bar)

地址栏用于输入您想要采集数据的站点的开始URL。地址栏应该只用于输入您的开始URL。你不能使用地址栏在网站中导航。相反,使用模板来执行导航。如果您不知道确切的起始URL,您可以输入任何网站URL,然后切换到导航模式,这允许您在web浏览器中导航。一旦你到达了想要开始数据提取的网页,你可以切换回选择模式,当前网页的URL将自动设置为开始URL。您可以通过单击浏览器工具栏按钮中的导航切换到导航模式。

工具栏(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 Ripper\Output\[PROJECT_NAME]

步骤4-运行数据采集项目

现在是运行您的数据采集项目的时候了。单击工具栏按钮运行项目,以弹出下面的屏幕。


DataController

一个数据采集项目可以使用web浏览器、internet explorer或web爬虫代理运行。选择web浏览器代理,直到您对该软件更加熟悉,并且您已经准备好优化您的数据采集项目。

第一次运行一个项目时,总是检查视图浏览器和调试选项。这允许您观察Visual Web Rippere是如何提取数据的,这使得纠正数据提取项目中的任何问题变得更加容易。

数据采集示例


在本例中,我们将从澳大利亚黄页中提取公司数据。网站看起来是这样的。


Yellow Page

我们将在新南威尔士州(NSW)寻找所有的旅馆(Hotels)和苹果商店(Apple Shops)。要做到这一点,我们需要配置一个数据采集项目,该项目可以提交搜索表单,然后从搜索结果中提取数据。

按照以下步骤创建数据提取项目。

步骤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按钮或右键单击并从上下文菜单中选择新模板。


Submit Template

接下来,我们为表单字段添加FormField元素。

1. 单击捕获的元素窗口中的Content选项卡。这确保了我们在处理内容元素,而不是模板。
2. 单击web浏览器中的什么输入字段。
3.单击New按钮或右键单击并从上下文菜单中选择新内容。
4. 在捕获窗口中输入输入值。我们需要两次提交web表单(一次用于搜索词酒店,一次用于苹果商店),所以我们在捕获窗口中输入搜索词。
5. Visual Web Rippere自动将FormField输入值保存到输出数据中。如果您不想保存输入值,您可以重新设置save Content选项。


Clue Edit


Save Content

接下来,我们为Where表单字段添加FormField元素。

1. 单击web浏览器中的Where输入字段。
2. 单击New按钮或右键单击并从上下文菜单中选择新内容。
3. 在捕获窗口中输入输入值。我们只需要在新南威尔士州进行搜索,所以我们只在捕获窗口中输入新南威尔士(NSW)的单一值。


Location Edit

现在我们已经完成了web表单的配置,因此我们可以通过单击open按钮打开FormSubmit模板。这将在web浏览器中提交web表单并打开搜索结果页面。

步骤3——遍历搜索结果

现在我们在搜索结果页面上,我们想要提取结果中列出的每个公司的数据。当您想从web元素列表中提取数据时,通常需要使用PageArea模板来遍历该列表。

我们通过以下步骤创建一个PageArea列表模板:
1. 选择列表中的第一行。
2. 右键单击第二行中的任何地方,并从上下文菜单中选择Create List。
3. 单击New按钮,或右键单击上下文菜单中的新模板。


Create List


PageAreaTemplate

现在,我们已经完成了PageArea模板的配置,因此我们可以通过单击open按钮打开模板。PageArea模板没有导航到一个新网页,但是限制了所有选择到一个网页的特定区域。当您打开一个PageArea模板时,页面区域会在web浏览器中显示为淡绿色。

步骤4-在PageArea模板中提取内容

我们将在搜索结果中提取所有公司名称。我们在一个PageArea列表模板中,它选择所有的搜索结果行,因此在一个行中所做的所有选择将被自动地应用到搜索结果中的所有其他行。按照以下步骤配置项目以提取公司名称:

1. 单击第一行中的公司名称。所有其他行中的公司名称将被自动选择。
2. 单击New按钮或右键单击并从上下文菜单中选择新内容。
3.标题是一个链接,因此Visual Web Rippere自动将内容类型设置为链接,但是我们想要提取文本,因此我们将内容类型更改为元素。


Title Selection

步骤5-导航到详情页面

我们仍然在PageArea模板中,我们已经配置了这个项目来提取公司的标题内容。我们还想要提取一些只有在我们点击公司链接并查看公司详细页面时才可用的内容。

按照以下步骤添加一个链接模板,该模板将导航到详细页面:

1. 单击捕获的元素窗口中的Template选项卡。这确保了我们使用的是模板而不是内容元素。
2. 在第一个搜索结果行中单击公司标题。我们在一个PageArea列表模板中,它选择了所有的搜索结果行,因此,在一行中所做的所有选择都将自动应用到搜索结果中的所有行。
3. 单击New按钮或右键单击并从上下文菜单中选择新模板。
4. 确保模板类型设置为链接,而不是PageArea。
5. 有时,当您想要遵循一个链接列表时,开始新的Web浏览器选项是很有用的。通常情况下,Visual Web Ripper会跟随一个链接并处理下一页,然后再返回到先前的页面,以便跟踪列表中的下一个链接。如果你激活了新的Web浏览器选项,Visual Web Ripper将会打开一个新的Web浏览器的链接,所以它不需要回到以前的网页来跟踪下一个链接。这样可以节省时间,使您的数据提取项目运行得更快。


Links Template


New Browser

我们已经完成了对细节页面的链接模板的配置,因此我们可以通过单击open按钮打开链接模板。web浏览器将导航到列表中的第一个公司链接。如果你想打开一个不同的公司链接,你可以在点击打开按钮之前简单地选择网页浏览器中的链接。

步骤5-从细节页面中提取内容

现在我们在一个公司的细节页面上,我们想要配置这个项目从这个网页中提取一些内容。详细信息页面有两个关于我们和产品和服务的信息标签。每个标签后面的信息总是在网页上,但是网页会隐藏和显示信息,这取决于你选择的信息标签。单击选项卡不会触发新的页面加载或AJAX操作,因此我们不需要一个链接模板来处理选项卡。Visual Web Ripper不关心内容是可见的还是隐藏的。它可以提取隐藏的内容和可见的内容,因此我们可以简单地点击显示感兴趣的信息的选项卡,然后开始标记我们想要提取的内容。

产品和服务选项卡显示一个包含关于酒店信息的表格。我们想要提取酒店的评级。搜索结果中的所有酒店都有不同的信息显示在桌子上;对于一家酒店来说,第一张表可能包含酒店的评级,但对于另一家酒店来说,第一行可能包含完全不同的信息,比如设施。简单地提取第一行的内容并不总是提供酒店的评级。我们想要获得酒店的评级,如果酒店的评级没有被列出来,我们就不需要。

在提取酒店评级内容时,遵循以下步骤使用文本过滤器:

1. 确保你在一个有酒店等级的细节页面上。如果在搜索结果中没有显示酒店的等级,回到以前的模板,选择不同的酒店,然后再打开链接模板。
2. 在web浏览器中选择酒店等级。
3. 右键单击评级文本,选择Filter,然后选择必须从上下文菜单中获得文本评级。
4. 单击New按钮或右键单击并从上下文菜单中选择新内容。


Text Filter

步骤6-跟踪页面导航中的所有链接

搜索结果页面只显示了40家公司的页面,因此整个搜索结果被分散到多个页面上。我们想要为所有搜索结果页面的所有公司提取数据。该网站使用页面导航条,允许用户在搜索结果页面之间进行导航。

我们将添加一个pagenavigation 导航模板,它将使用网页导航栏中的下一个页面链接来查找搜索结果中的所有页面。

1. 返回到PageArea模板所在的模板。您可以使用Visual Web开膛手导航窗格中的Back按钮来移动到先前的模板。
2. 单击捕获的元素窗口中的Template选项卡。这确保了我们使用的是模板而不是内容。
3. 单击web浏览器中的下一个页面链接。要确保选择链接而不是箭头图像,右键单击箭头图像,并从上下文菜单中选择最近的链接。
4. 单击New按钮或右键单击并从上下文菜单中选择新模板。
5. 确保模板类型设置为pagenavigation导航。


Navigation Selection

步骤7-导出提取的数据

现在,我们已经为数据提取项目添加了模板和内容,我们想要配置如何保存提取的数据。默认情况下,Visual Web Ripper的导出将数据提取到XML Excel格式,我们不希望改变这种输出格式。XML Excel格式类似于Excel 2003+的标准Excel文件,但有时像DreamWeaver这样的其他应用程序可能会劫持这种格式。在这些情况下,您需要从Excel中打开输出文件,或者简单地将文件拖放到Excel中。或者,您可以右键单击该文件,选择Open。然后选择Excel。


Data Source

步骤8——运行数据采集项目

现在我们已经准备好运行数据提取项目了。单击Run Project工具栏按钮来运行一个项目。


Start Projects

单击Stop按钮以停止数据提取。您可以通过单击view data按钮查看已提取的数据。

进阶注意事项

您运行这个数据提取项目的时间较长时,您会注意到它对前几个搜索结果页面的效果很好,但是在随后的页面中,它突然开始失效。调试窗口将显示表明不再找到PageArea模板的消息。

如果一个网站上有很多不同的页面布局,那么网页抓取就变得困难了。显示第一页搜索结果的网页与显示第三页搜索结果的网页很相似,但是有细微的差别对数据提取项目有很大的影响。

为了识别问题,我们需要导航到搜索结果的第三个页面。我们这样做是通过打开pagenavigation导航航模板三次。您将注意到,在搜索结果的第三页上,PageArea模板的状态图标是黄色的,而不是绿色的。这表明,PageArea的选择不再有效。


Invalid Selection

如果您编辑PageArea模板,web浏览器中没有选择任何内容,因为选择是无效的。

要理解发生了什么,在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浏览器中的选择。


List Options

如果单击XPath options选项卡,您会注意到Visual Web Ripper已经自动创建了以下XPath选择:

//UL[@id='localListings']/LI

现在您可以再次运行数据提取项目了。它应该在所有的搜索结果页面上工作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 项目选项 项目选项是适用于整个项目的选项。最常用的项目选项与以下三个方面相关: 开始的urls 连接 代理 您可以...
    游侠儿evil阅读 814评论 0 0
  • 运行一个项目Running a Project 在您设计了一个数据提取项目之后,您需要运行它来提取数据。您可以以许...
    游侠儿evil阅读 1,150评论 0 0
  • Web框架正如前文所述, 在整个项目结构中处于一个承上启下的位置, 是整个项目的核心组件, 所以这次来聊聊Web框...
    真压力很大同志阅读 3,421评论 2 12
  • 一、概述 JSP是Java Server Pages的简称,是一种动态网页开发技术,运行在服务端。以Java语言作...
    凛_冬_将_至阅读 930评论 0 4
  • 一、概要 导图的topic从1点钟方向开始,顺时针方向阅读 导图的图标 切换topic: tab,Shift+Ta...
    y_jade阅读 2,998评论 0 4