2016-09-21 55 views
0

我有一个问题,如果我要抢在URL http://www.tokopedia.com/lbagstore抓取文本存储到PHP数组

所有产品名称在url上面会显示所有产品

我看到在查看源文件菜单中的产品名称是标签之间

<b itemprop="name"> [product name] <b> 

我有PHP脚本像下面:

<? 
$html=file_get_contents("https://www.tokopedia.com/lbagstore"); 
preg_match("'<b itemprop=\"name\">(.*?)</b>'si", $html, $match); 
$productname = $match[1]; 
echo $productname; 
?> 

但似乎全是空白页。

我有困难的特别是摆在阵列,并显示它们

没有人可以帮我解决这个代码?谢谢!

+3

简单。不要使用正则表达式。使用DOM和XPATH:'// b [@ itemprop =“name”]/text()' –

+0

嗨,感谢您的回复,您的脚本可以在PHP脚本中使用吗?我真的需要完整的代码好朋友你介意 – Devisy

+3

http://php.net/dom –

回答

1

您正在“检查”页面的html代码,而不是“显示源代码”。如果你想从网站中提取数据,你需要显示它的源代码,然后你可以使用正则表达式从它得到你想要的。

我自己检查了代码,源代码中没有<b itemprop="name"> [product name] <b>,这就是为什么你没有任何结果。看到这段代码的唯一方法是检查显示的代码,而不是源代码;)

如果您将代码更改为此,您将能够看到真实代码的外观,然后您将能够调整你的正则表达式来获取你想要的产品名称。

$html = "https://www.tokopedia.com/lbagstore"; 
var_dump($html); 
preg_match("'<b itemprop=\"name\">(.*?)</b>'si", $html, $match); 
$productname = $match[1]; 
echo $productname; 

只需添加var_dump即可显示文本。另外,如果你不能从网站上删除你想要的内容,并且需要快速完成,我可能会建议你使用名为“grepsr”(https://chrome.google.com/webstore/search/grepsr)的免费谷歌浏览器扩展程序,我测试了它,并且我可以提取产品的名称在5分钟内。

编辑:另外,如果你想抓住页面中所有产品的名称,你将不得不使用preg_match_all()而不是preg_match。我希望这有助于;)

+1

你好亚历克斯..你有2个答案,我尝试过:首先使用var_dump是伟大的,但它有困难抓住下一页。你的第二个解决方案非常棒。点击链接时,我将学习更多如何获取所有详细信息。谢谢aleX你救了我 – Devisy

+0

不客气。 – Alex