PHP页面搜索 - cUrl重定向问题

时间:2010-12-26 23:27:45

标签: php html curl web-scraping

我正试图抓住这个链接:https://www.bu.edu/link/bin/uiscgi_studentlink/1293403322?College=SMG&Dept=AC&Course=222&Section=C1&Subject=ACCT& MtgDay =& MtgTime =& ModuleName = univschr.pl& KeySem = 20114& ViewSem = Spring + 2011& SearchOptionCd = C& SearchOptionDesc = Class +受试者安培; MainCampusInd =。 (如果在浏览器中访问它,它可以正常工作。)

所以我使用这段代码来完成它:

function curl_classes($url){
  $ch = curl_init();
  $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';
  curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
  curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  echo "NOW IM REALY GOING TO: " . $url;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_FAILONERROR, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 50);
  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);

  $html = curl_exec($ch);
  curl_close($ch);
  unset($ch);
  if (!$html) {
    echo "<br />cURL error number:" .curl_errno($ch);
    echo "<br />cURL error:" . curl_error($ch);
    exit;
  }
  echo htmlspecialchar($html);
} 

修改

好的,新问题。我的cookie存储代码似乎不起作用。我可以按照需要刮掉这个:bu [DOT] edu / link / bin / uiscgi_studentlink / 1293357973?ModuleName = univschr.pl&amp; SearchOptionDesc = Class + Subject&amp; SearchOptionCd = C&amp; KeySem = 20114&amp; ViewSem = Spring + 2011&amp; amp; ;主题= ACCT&安培; MtgDay =安培; MtgTime =

但是当我试图抓住这篇文章顶部的链接时,我得到:“对不起,你需要启用cookie ...”

我的Cookie存储代码出错了什么?

4 个答案:

答案 0 :(得分:2)

我打赌你确实访问了HTML。它将HTML打印到屏幕上,该HTML包含将您重定向到新页面的代码。

尝试输出HTML的编码版本,以便浏览器将其解释为纯文本:

echo htmlspecialchars($html);

但是,查看您的实际代码:请不要假装是Google。你不是Googlebot,所以你的脚本不应该说你是。如果您包含任何用户代理(我建议您这样做),请使其反映您的身份,以防网站所有者遇到您的机器人问题。不需要阴暗:)

答案 1 :(得分:0)

由于您在浏览器中回显了内容,因此将执行远程页面中的任何JavaScript。大概有些东西正在重定向页面。

答案 2 :(得分:0)

问题是 cUrl不是真正的浏览器,因此无法使用Javascript和Cookie。您可以通过command line interface使用iMacros for Firefox。 iMacros专门提供web scraping支持。

答案 3 :(得分:0)

您可以将html写入文件,然后在编辑器中打开它,如果您有烦人的javascript。或者只是在浏览器中禁用JS。