我試圖建立一個基本的網頁刮板。它幾乎適用於任何網站,但有些網站我無法取消,這是爲什麼?這是我對工作的站點代碼(本網站):PHP不讓我輸出某些網站的html,爲什麼?
<!doctype html>
<html lang="en-US">
<body>
<?php
$url ='http://stackoverflow.com/';
$output = file_get_contents($url);
echo $output;
?>
</body>
</html>
當我自己的本地主機上運行此stackoverflow.com的內容輸出到我的網站。這裏是一個網站,這並不爲工作:
<!doctype html>
<html lang="en-US">
<body>
<?php
$url ='https://www.galottery.com/en-us/home.html';
$output = file_get_contents($url);
echo $output;
?>
</body>
</html>
加載站點,而不是我得到這個錯誤:
Warning: file_get_contents(https://www.galottery.com/en-us/home.html): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in C:\xampp\htdocs\projects\QD\webScraping\index.php on line 6
爲什麼這項工作的一些網站,而不是爲他人?我認爲這可能是因爲其中一個是HTTPS網站,但我已經爲https://google.com等其他人嘗試了此代碼,並且它工作得很好。
我使用XAMMP運行本地PHP。
他們很可能在他們的服務器上有東西阻止人們刮他們的網站 – andrewsi
你有沒有試圖從瀏覽器訪問網頁?如果您無法訪問它,那麼您已被阻止訪問該網站 –
遠程站點正根據我們不可能知道的某些策略阻止請求。也許由於用戶代理或類似的缺乏。順便說一句,如果你打算在公共網站上使用這種策略,一定要獲得相關的許可,否則你可能會在法律情況下結束 – apokryfos