PHP:延迟解析页面源(通过file_get_html())1秒

时间:2010-11-13 03:34:19

标签: php curl

我正在使用PHP尝试在父页面加载完成后的几毫秒内尝试动态加载内容的页面。

我使用curl来解析页面,而simpleHtmlDom则从解析后的html中抓取东西。

我努力遍历DOM并爆炸()html之外的东西都没有返回。我唯一的想法是,在加载父页面之后加载内容

这是我的代码。

<? 
 $url = 'http://www.facebook.com/OneAndroidAppaDay';
 $scrapeUrl = 'http://www.facebook.com/OneAndroidAppaDay';

  include_once('simple_html_dom.php');
  require_once("bitly.php");

  $userAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
  curl_setopt($ch, CURLOPT_URL,$scrapeUrl);
  curl_setopt($ch, CURLOPT_FAILONERROR, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  $html = curl_exec($ch);
  if (!$html) {
   echo "<br />cURL error number:" .curl_errno($ch);
   echo "<br />cURL error:" . curl_error($ch);
   exit;
  }

  $appBitlyUrl = $html->find('div[class=UIStoryAttachment_Title]',0)->find('a',0)->href; // fail :(
  echo 'Bitly Url:  ' . $appBitlyUrl;
?>

在第24行(用内联注释表示)中出现了这个错误:

  

致命错误:在第24行的/home/xxxxxxxx/public_html/xxx.xx/xxxx.php中调用非对象上的成员函数find()

有没有办法让它在抢夺页面的html之前等待一两秒?或者也许有人有更好的见解?

由于

标记

2 个答案:

答案 0 :(得分:1)

做一个简单的延迟

sleep(2); // 2 second delay before continuing

答案 1 :(得分:0)

您应该重新阅读错误消息。它不是源于时间问题。

你从curl得到一个$ html字符串。但你不能调用phphtmldom函数 - &gt;立即找到它。你必须在遍历之前解析它。另外还不清楚为什么你首先使用curl。要么只使用$dom = str_get_html($html),要么尝试:

$dom = file_get_html('http://www.facebook.com/OneAndroidAppaDay');

$bituurl = $dom->find('div[class=UIStoryAttachment_Title]',0)->...