0

我想从谷歌图片搜索中收集图片。但是,我经常收到错误通知。

例如,https://www.google.com/search?q=banana&hl=en&gws_rd=ssl&tbm=isch我的浏览器中的 URL 很好,但在网络收获中它报告说:对实体“gws_rd”的引用必须以 ';' 结尾 分隔符。

我猜 '&' 是 webharvest 中的一个特殊字符,但我找不到有关它的信息。你能弄清楚为什么吗?

这是代码:

<var-def name="search" overwrite="false">banana</var-def>

<var-def name="url"><template>http://images.google.com/images?q=${search}&amp;hl=en</template></var-def>
<var-def name="xml">
    <html-to-xml>
        <http url="${url}"/>
    </html-to-xml>
</var-def>
<var-def name="largeImgUrl">
    <xpath expression="//*[@id='irc_cc']/div[4]/div[1]/div/div[2]/div[1]/a/img">
        <var name="xml"/>
    </xpath>
</var-def>  
4

1 回答 1

0

根据经验,您需要先将 url 存储在一个变量中,然后从 http 处理器调用中引用该变量

编辑

我注意到你已经粘贴了你的代码。好的。

1) 请记住,所有 webharvest 配置文件都是用 XML 编写的,而 amersand &是 XML 中的一个特殊字符,因为它是实体声明
的一部分。 在 webharvest 中,我通常通过 在或块中使用CDATA 部分来避免这个问题。<template><code>

2)使用webharvest图形界面时,可以轻松调试xpath表达式。正常运行您的代码,然后在顶部的工具栏上单击带有放大镜的图标。然后选择“xml”(您设置的变量的名称)。这将打开一个新窗口,其中包含您的 xml 预览。确保“查看为”下拉菜单设置为 xml。
您现在应该有一个“xpath 表达式”框,您可以在其中测试您的 xpath。 webharvest 变量预览

3)我强烈反对编写引用编号元素的 xpath。(例如div[4]/div[1]/div/div[2]/div[1]/)。底层页面中的任何微小更改通常都会破坏代码。根据 id 或其他属性选择元素要好得多。

于 2014-09-26T14:03:01.823 回答