我正试图抓住这个链接: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存储代码出错了什么?
答案 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。