我正在构建一个脚本,通过从网站列表中解析html来为我提供产品数组。
我相信我做的一切都正确..但由于某种原因,我只有一个网站Makita.ca有很多困难
所以..我使用DOMXPath来检索元素。我正在提供来自makita.ca的RAW html
我想要的图片是左边图片上的图片
请注意,我唯一需要的是图像的链接而不是实际的链接 图像。
下面的图片页面位于http://www.makita.ca/index2.php?event=tool&id=100
$productArray = array();
$Dom = new DOMDocument();
@$Dom -> loadHTML($this->html);
$xpath = new DOMXPath($Dom);
echo $xpath -> query('//*[@id="content_other"]/table[2]/tbody/tr/td[1]/table/tbody/tr[4]/td/table/tbody/tr[1]/td/div/a/img')->length;
if($xpath -> query('//*[@id="content_other"]/table[2]/tbody/tr/td[1]/table/tbody/tr[4]/td/table')->length > 0)
{
for($i=0;$i<$xpath->query('//*[@id="content_other"]/table[2]/tbody/tr/td[1]/table/tbody/tr[4]/td/table/tbody/tr')->length;$i++)
{
if($xpath->query('//*[@id="content_other"]/table[2]/tr/td[1]/table/tr[4]/td/table/tr['.$i.']/td/div/a/img') > 0)
$productArray['picture'][] = $xpath -> query('//*[@id="content_other"]/table[2]/tr/td[1]/table/tr[4]/td/table/tr['.$i.']/td/div/a/img')->item(0)->nodeValue;
}
}
你看到我的错误是什么?从现在开始我真的输了。
编辑:
确定用于测试目的我回应查询()方法的长度女巫应该给我多少元素匹配查询
所以我重新输入了查询,这样他们就不会有任何非asci字符了 所以我重新输入了洞查询'// * [@ id =“content_other”] / table [2] // tr / td 1 / table // tr [4] / td / table // tr {{ 3}} / TD / DIV /一个/ IMG” 然后结果是0
所以我按部分删除了查询的结尾..
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]/td/table//tr[1]/td/div/a = 0
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]/td/table//tr[1]/td/div = 0
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]/td/table//tr[1]/td = 0
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]/td/table//tr[1] = 0
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]/td/table = 0
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]/td = 0
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr = 5
哇我在这里有一些元素匹配! 好吧,试试最后一个元素女巫是我需要的那个 所以因为它是零基础然后得到tr数字5我需要输入作为路径这
//*[@id="content_other"]/table[2]//tr/td[1]/table//tr[4]
但我仍然得到0 ....所以我不知道该怎么做..
答案 0 :(得分:0)
//div[@class='product_heading']/ancestor-or-self::table[1]//a/img
首先选择“动作镜头”,然后选择在此群下找到的所有图像。
这个XPath表达式比你的表达式更可靠,因为位置表达式的数量很少,随着标记的改变,这些表达式很容易破裂。
//div[@class='product_heading']/ancestor-or-self::table[1]//a[@rel='thumbnail']/img
将是一个更强大的安全