使用Curl php

时间:2015-07-21 17:04:41

标签: javascript php html curl iframe

我正在尝试抓取通过iframe从其他域生成的评论。 当我尝试这样做时,我要么得到一条空消息,说这个应用程序没有注册。我明白这是由于跨域问题。我使用Curl在php中编写了以下代码。当我通过父url它加载页面但iframes下的内容丢失了,当我传递子url时,它会返回一条消息,说明应用程序未注册。

代码:

<?php

// 1. initialize

$ch = curl_init();

// 2. The URL containing the iframe

$url = "http://www.ndtv.com/india-news/1993-mumbai-blasts-convict-yakub-    memons-final-mercy-plea-rejected-783656?pfrom=home-lateststories";

// 3. set the options, including the url

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// 4. execute and fetch the resulting HTML output by putting into $output
$output = curl_exec($ch);

// 5. free up the curl handle  
curl_close($ch);

// 6. Scrape for a single string/word ("Paris")  
preg_match("~</?p[^>]*>~", $output, $match);
   if($match)

// 7. Display the scraped string  
echo $output;
?>

iframe的子网址

http://social.ndtv.com/static/Comment/Widget/?&key=68a2a311a51a713dad2e777d65ec4db4&link=http%3A%2F%2Fwww.ndtv.com%2Findia-news%2F1993-mumbai-blasts-convict-yakub-memons-final-mercy-plea-rejected-783656&title=Yakub+Memon+to+Hang+On+July+30+for+India%27s+Deadliest+Terror+Attack&ctype=story-news&identifier=story-news-783656&enableCommentsSubscription=1&ver=1&reply=1&sorted_by=likes

我有什么方法可以访问iframe内容。我想要这种数据表单分析,而不是任何非法用法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您需要实际解析HTML ...正则表达式不适用于HTML。

请参阅:RegEx match open tags except XHTML self-contained tags

答案 1 :(得分:0)

如果您需要讨论评论,则需要提取评论部分的iframe网址,而不是包含iframe的网页。 cURL只返回网址的源代码,它不会递归跟踪iframe链接并嵌入它们。