使用cURL(php)从网站收集特定数据
我正在一个网站上工作,其中一部分允许用户查看产品。我希望能实现一个简单的目标,那就是列出产品,并且说还没有评论 由于产品总是在生产,我想自动收集的名称,价格,也许还有一张照片 我目前正试图从中访问此信息 这是我目前的代码:使用cURL(php)从网站收集特定数据,php,html,parsing,curl,Php,Html,Parsing,Curl,我正在一个网站上工作,其中一部分允许用户查看产品。我希望能实现一个简单的目标,那就是列出产品,并且说还没有评论 由于产品总是在生产,我想自动收集的名称,价格,也许还有一张照片 我目前正试图从中访问此信息 这是我目前的代码: <?php $ch = curl_init("http://www.nrs.com/category/2740/whitewater-kayaking/womens-life- jackets"); $fp = fopen("collected.txt", "w
<?php
$ch = curl_init("http://www.nrs.com/category/2740/whitewater-kayaking/womens-life- jackets");
$fp = fopen("collected.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
它将数据收集到一个文本文件中。
在尝试解析html时,这里有几个问题。
-首先,我需要确保所有分页都已满,或者循环浏览页面。
-我需要收集产品的名称等。。。所以,删掉某些代码
直到我只剩下我想要的信息
-让它写一个类似|*|的分隔符,这样当我的网站显示名称时,它就知道什么时候写下下下一个产品。
-使网站所有者难以阻止此。。。我希望他保留部门的名字等等。。。相同的。
-一旦找不到,请停止搜索
以下是我认为在他们的网站上很重要的代码:
<div class="categoryItem">
<div class="shortDesc">
<p>The beautifully designed Astral Linda women's life jacket is affordable, lightweight and all-day comfortable for any type of boating. The thin back works comfortably with any kayak or raft seat.</p>
</div>
<a href="/product/40086.02/astral-womens-linda-pfd" data-prodImg="40086.02"><img class="productImageThumb" src="http://nrsweb5.richfx.com.edgesuite.net/image/media/40086_02_Azul_Front_010313_150x150.jpg" width="150" height="150" ALT="Astral Women's Linda PFD" /></a>
<div class="productColorOptions">
<a href="javascript:void(0);" title="Azul"><img src="http://nrsweb5.richfx.com.edgesuite.net/image/media/40086_02_Azul_Front_010313_swatch_15x15.jpg" alt="" border="0"></a>
<a href="javascript:void(0);" title="Gray"><img src="http://nrsweb5.richfx.com.edgesuite.net/image/media/40086_02_Gray_Front_010313_swatch_ 15x15.jpg" alt="" border="0"></a>
</div>
<div class="clearIt"></div>
<h2><a href="/product/40086.02/astral-womens-linda-pfd">Astral Women's Linda PFD</a> </h2>
<p class="reviewLinkBlock"></p>
<h4>$94.95</h4>
<div class="compareButton"><a href="javascript:void(0);" data-compare="40086.02" rel="nofollow" class="compareBtn compareAdd">Compare</a><span class="cancelCompare"><a href="javascript:void(0);" data-compare="40086.02" rel="nofollow" class="compareRemove">x</a></span></div>
</div><!-- end class="categoryItem" -->
有多个categoryItem Div,仅针对产品。用户甚至很好地对其进行了评论。所以现在我需要不断剥离代码层,直到我能找到名称。。。有什么建议/解决方案吗?我建议使用正则表达式匹配包含所需信息的元素,使用preg\u match\u all 例如:
preg_match_all('#\<p>(.+?)\<\/p>#s', $html, $matches);
显然,您可能需要修改模式以满足您的需要