无法获取php抓取的特定<p>标记</p>

时间:2014-08-24 21:43:33

标签: php regex preg-match-all

我正在学习php报废。我刚开始废弃以下网站:

 **[URL]="http://www.youramazingplaces.com/"**

到目前为止,我已经取消了每个帖子的所有标题,图像来源和链接地址。我很难搞清楚&lt; p>标签,因为我需要描述每个标题,并且该描述是2或3&lt; p>标签和该页面上的所有图像也在&lt; p>标签。 我正在使用正则表达式伙伴。 我想从每个帖子创建一个正则表达式,它应该从页面中提取每个描述,除了包含图像或其他类的paragraphg标记。 现在我的REGEX提取了所有的段落标签,但我不希望它们全部关闭。我只需要那些只包含描述的标签。

到目前为止,我已经制作了以下正则表达式来获取该页面中的所有段落: “%&lt; p&gt;(?P&lt; description&gt;。*?)&lt; / p&gt;%m'”。

输出如下:“ 焦特布尔是印度拉贾斯坦邦的第二大城市。总人口是851,051人。它是印度最美丽,访问量最大的地方之一。这个城市有两个绰号:阳光明媚的天气“太阳城”和Mehrangarh堡周围生动的蓝色房屋的“蓝色城市”。在那里,您可以看到令人惊叹的古老建筑,美丽的风景,令人惊叹的建筑...... 焦特布尔的景点有:Mehrangarh For,Jaswant Thada,Rao Jodha Desert Rock Park,Umaid Bhawan Palace,Mandore和Mandore Gardens以及许多其他有趣的地方。对于那些喜欢旅行和探索一些新的不同地方的人来说,绝对应该去印度的焦特布尔。下面你可以看到一些地方的照片,并在其中享受。此辉煌的照片也会让你感觉像在那里,享受焦特布尔的美丽。如果您想度过难忘的假期,请访问焦特布尔。 图片来自Girish Suryawanshi通过Flickr 图片由Michael Foley通过Flickr提供

它包含图片标记,我也不需要它们。我只需要从每个页面中删除描述。

以下是我的代码:

 *//$url="http://www.youramazingplaces.com/";
 //$curl_scraped_page=initCurl($url);*

 $pagenumber=1;

 while($pagenumber<=1)
 {
 $url="http://www.youramazingplaces.com/page/{$pagenumber}/";

 $curl_scraped_page=initCurl($url);
 *//////////LINKS////////////*
 preg_match_all('%<a href="(?P<links>.*?)"><b>(?P<readmore>.*?)</b></a>%m',      
 $curl_scraped_page,$link_array);
 for($x=0; $x<count($link_array['links']); $x++ )

 {
 $curldata=  initCurl($link_array['links'][$x]);

 preg_match_all('%<h1 class="(.*?)">(?P<title>.*?)</h1>%s', $curldata,$title);

 preg_match_all('%<p><img class="(?P<imageclass>.*?)" src="(?P<imgsrc>.*?)"alt="                 (?P<alt>.*?)"/>   </p>%m', $curldata,$img_src_array);

    preg_match_all('%<p>(?P<description>.*?)</p>%m', $curldata,$description_array);

   print_r($description_array['description']['1']);

  $pagenumber++;

 }

1 个答案:

答案 0 :(得分:1)

帮自己一个忙,永远不要试图用正则表达式解析HTML。使用类似的东西:

然后你就像在jQuery中一样使用选择器来挑选消费的HTML片段。