【发布时间】:2014-05-27 23:39:43
【问题描述】:
我创建了一个函数,它使用诸如“戴尔笔记本电脑 x500”之类的关键字,它正在尝试搜索它。我做了一个 hacky 方法,只是将它添加到关键字搜索 url,但与我在搜索框中键入文本并按下提交相比,它会给我不同的结果。然后它会抓取第一个结果链接。有时这可以正常工作,有时却不能。
function getAmazonLink($keywords){
$keywords = preg_replace("/[^a-z0-9_\s-]/", "%20", $keywords);
$link = "http://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=$keywords";
//return $link;
$content = getContents($link);
$doc = new DOMDocument();
$doc->loadHTML($content);
$as = $doc->getElementsByTagName('a');
foreach ( $as as $a){
if($a->parentNode->nodeName == 'h3'){
if($a->parentNode->getAttribute('class') == 'newaps'){
if($a->parentNode->parentNode->getAttribute('id') == 'result_0'){
return $a->getAttribute('href');
}
}
}
}
return $link;
【问题讨论】:
-
亚马逊介绍了您。如果您搜索某些内容,它会根据它认为您会喜欢的内容提供量身定制的结果。如果我搜索某些东西,我会得到适合我喜欢的结果。如果一个无 cookie 的未知 IP 进行搜索,那么亚马逊只会返回一个一般的“最佳猜测”。
-
无论如何要解决这个问题?感谢您的评论
-
“绕过它”是什么意思?您的结果是根据您进行个性化的,普通人的结果不会针对任何人进行个性化,因为他们与帐户没有关联。这是唯一有意义的可能行为。
-
@sphanley 当然有一个解决方法!打开一个新的浏览器选项卡,转到亚马逊,然后在那里进行搜索。 :我
标签: php web-services api amazon