gutenberg.orgにあるパブリックドメインブックのテキストをPHPで取得して解析する必要があります。ウェブページは、カールリクエストの異なるコンテンツを検出/表示しています - なぜですか?
ほとんどのWebページのコンテンツを取得するために、私はブラウザーのURLにナビゲートして見つけたとおりに正確にHTMLを取得するためにCURLリクエストを使用できます。
残念なことに、いくつかのページでは、最も重要なのはgutenberg.orgのページで、ウェブサイトは異なるコンテンツを表示したり、リダイレクトヘッダーを送信したりします。
たとえば、this target, gutenberg.org, pageをロードしようとすると、curl要求がthis different but logically related, gutenberg.org, pageにリダイレクトされます。私は正常に私のブラウザでクッキーとJavaScriptの両方をオフにしてターゲットページを訪問することができます。
同じサイトへの通常のブラウザ要求が行われていないときに、カール要求がリダイレクトされるのはなぜですか?ここで
私は、Webページを取得するために使用したコードは次のとおりです。
$urlToScan = "http://www.gutenberg.org/cache/epub/34175/pg34175.txt";
if(!isset($userAgent)){
$userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
}
$ch = curl_init();
$timeout = 15;
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_USERAGENT,$userAgent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
#curl_setopt($ch, CURLOPT_HEADER, 1); // return HTTP headers with response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_URL, $urlToScan);
$html = curl_exec($ch);
curl_close($ch);
if($html == null){
return false;
}
print $html;
私も問題を再現できません。期待どおりに動作しないコードを示すコードスニペットを追加できますか? – madshvero
@madshvero。私はちょうどコードを追加しました。 PHPも使いましたか? –
@ AlexanderO'Maraその問題はコマンドラインにはありません、atleast、良いニュースです。 –