【问题标题】:Unable to get specific <p> tag for php scraping [duplicate]无法为 php 抓取获取特定的 <p> 标签 [重复]
【发布时间】:2014-08-24 21:43:32
【问题描述】:

我正在学习php抓取。我刚开始抓取以下网站:

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

到目前为止,我已经抓取了每个帖子的所有标题、图片来源和链接地址。我对抓取

标签有点困惑,因为我需要每个标题的描述,并且该描述在 2 或 3 标记和该页面上的所有图像也在 标记中。 我正在使用正则表达式好友。 我想从每个帖子中创建一个正则表达式,该表达式应该从页面中提取每个描述,除了包含图像或其他类的段落标签。 现在我的正则表达式提取了所有的段落标签,但我不想全部去掉它们。我只需要那些只包含描述的标签。

到目前为止,我已经制作了以下正则表达式来获取该页面中的所有段落: "%(?P .*?)

%m'".

输出如下:" 焦特布尔是印度拉贾斯坦邦的第二大城市。总人口851,051人。它是印度最美丽和访问量最大的地方之一。这座城市有两个绰号:“阳光之城”是指阳光明媚的天气,“蓝色之城”则是因为梅赫兰加尔堡周围有着鲜艳的蓝色房屋。在那里你可以看到令人惊叹的古老建筑、美丽的风景、令人惊叹的建筑…… 焦特布尔的景点有:Mehrangarh For、Jaswant Thada、Rao Jodha Desert Rock Park、Umaid Bhawan Palace、Mandore 和 Mandore 花园以及许多其他有趣的地方。对于那些喜欢旅行和探索一些新的不同地方的人来说,绝对应该去印度的焦特布尔。您可以在下面看到一些地方的照片并享受其中。此外,这些精彩的照片会让您感觉身临其境,享受焦特布尔的美景。如果您想度过难忘的假期,请访问焦特布尔。 图片由 Girish Suryawanshi 通过 Flickr 拍摄 迈克尔·弗利通过 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++;

 }

【问题讨论】:

  • 通过

    标签获取,然后在内容上使用 strip_tags()?

  • 不要使用正则表达式解析 HTML
  • @Scuzzy ,如果我使用条形标签,我可以在这些标签之间进行过滤吗?因为我需要仅包含描述的特定两三个段落标签。我不需要其余信息,我很困惑关于那个。:(

标签: php regex preg-match-all


【解决方案1】:

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

然后,您只需像在 jQuery 中那样使用选择器挑选消耗的 HTML 片段。

【讨论】:

  • 谢谢大家。谁能推荐我从哪里学习 DOM?因为我是初学者,所以我需要一点帮助。
  • 这两个链接的文档会有所帮助。如果您可以使用 jQuery 选择器,则可以使用其中任何一种解决方案。
  • 其实phpQuery使用css选择器(pro),简单html dom使用自己的格式(con)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
相关资源
最近更新 更多