我想从Google图片搜索中收集图片。但是,我经常收到错误通知。
例如,我的浏览器中的网址https://www.google.com/search?q=banana&hl=en&gws_rd=ssl&tbm=isch
很好,但在网络收获中,它会报告:对实体“gws_rd”的引用必须以“;”结尾分隔符。
我猜'&'是webharvest中的一个特殊字符,但我无法找到有关它的信息。你能搞清楚为什么吗?
这是代码:
<var-def name="search" overwrite="false">banana</var-def>
<var-def name="url"><template>http://images.google.com/images?q=${search}&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>
答案 0 :(得分:0)
根据经验,您需要先将url存储在变量中,然后从http处理器调用中引用变量
我注意到您已粘贴代码。好。
1)请记住,所有的webharvest配置文件都是用XML编写的,而amersand &amp; 是XML中的特殊字符,因为它是entity declaration的一部分。
在webharvest中,我通过在<template>
或<code>
块中使用CDATA sections来正常避免此问题。
2)使用webharvest图形界面时,您可以轻松调试xpath表达式。正常运行您的代码,然后在顶部的工具栏上单击带有巨大玻璃的图标。然后选择“xml”(您设置的变量的名称)。这将打开一个新窗口,预览xml。确保“查看为”下拉列表设置为xml 您现在应该有一个“xpath表达式”框,您可以在其中测试xpath。
3)我强烈反对编写引用编号元素的xpath。 (例如div[4]/div[1]/div/div[2]/div[1]/
)。基础页面中的任何小变化通常都会破坏代码。最好根据id或其他属性选择元素。