TShopping

 找回密碼
 註冊
搜索
查看: 1483|回復: 0

[分享] php怎麼抓取網頁內容,怎麼採集網絡上的內容

[複製鏈接]
發表於 2018-3-7 17:25:43 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
在學習php過程中,很多時候,需要採集(抓取)網頁內容,沒有這個需求的人肯定會懷疑抓取網頁有什麼用?在這裡小編不想解釋太多,感覺很多人會用到這個功能,比如你要分析某個網頁的網頁內容啦質量啦什麼的,總得先獲取到那個網頁的內容吧,自己內網網頁的內容都好說資料庫裡面都有取出來怎麼處理都行,但是是外網的網頁內容呢?只能用php的函數採集網頁內容了。

本文只介紹三種方法,兩種比較簡單的獲取網頁代碼的函數一種設置相對比較複雜但是功能強大的函數。用哪個請自己決定,本文章只做分析和介紹。本文重點推薦使用方法三,為什麼請看文章。

方法一、使用file_get_contents獲得網頁原始碼
  1. <?php
  2. $fh= file_get_contents('http://www.iruohong.com/');
  3. echo $fh;
  4. ?>
複製代碼


這種方法很簡單,其實file_get_contents有5個參數,但是常用的只有隻有這一個參數,而且其他的幾個參數有點雞肋,怎麼說呢用到哪些參數的人覺得很重要,我沒用過所以感覺雞肋,高手勿噴,本文只代表我個人想法。本文考慮到篇幅問題只把本函數介紹到這,詳細介紹請關注微信公眾號(若鴻網),裡面會有本文章的詳細版。

方法二、使用fopen獲得網頁原始碼
  1. <?php
  2. $fh = fopen('http://www.iruohong.com/', 'r');
  3. if($fh){
  4. while(!feof($fh)) {
  5. echo fgets($fh);
  6. }
  7. }
  8. ?>
複製代碼

其實fopen的參數有四個常用的事前兩個,第一個參數就是你要打開的文件或url,第二個參數是規定要求到該文件/流的訪問類型。第二個參數需要解釋的話會很多文字,本文章會很長,在這裡小編只介紹用的訪問類型』r』,r在這裡的意思就是只讀方式打開,將文件指針指向文件頭。



方法三、使用curl獲得網頁源碼 首先說一下為什麼有上面兩種方法了還要介紹這種方法呢,小編是不是很無聊呀,其實不是看下面的文字你就會懂為什麼會介紹curl而且要著重介紹了。

我先給大家簡單介紹一下什麼curl?

cURL可以使用URL的語法模擬瀏覽器來傳輸數據,因為它是模擬瀏覽器,因此它同樣支持多種協議,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等協議都可以很好的支持,包括一些:HTTPS認證,HTTP POST方法,HTTP PUT方法,FTP上傳,keyberos認證,HTTP上傳,代理伺服器,cookies,用戶名/密碼認證,下載文件斷點續傳,上傳文件斷點續傳,http代理伺服器管道,甚至它還支持IPv6,scoket5代理伺服器,通過http代理伺服器上傳文件到FTP伺服器等等。

除此之外方法一和方法二沒有辦法有效的做到錯誤處理更沒辦法做到一些高難度的任務加之Curl的這些林林總總的強大功能就是我們要使用它的理由。Curl怎麼用的,步驟如下:

1.初始化,創建一個新cURL資源

2.設置URL和相應的選項

3.抓取URL並把它傳遞給瀏覽器

4.關閉cURL資源,並且釋放系統資源


下面看代碼:

  1. <?php

  2. //1.初始化,創建一個新cURL資源
  3. $ch = curl_init;

  4. //2.設置URL和相應的選項
  5. curl_setopt($ch, CURLOPT_URL, "http://www.iruohong.com/");
  6. curl_setopt($ch, CURLOPT_HEADER, 0);

  7. //3.抓取URL並把它傳遞給瀏覽器
  8. curl_exec($ch);

  9. //4.關閉cURL資源,並且釋放系統資源
  10. curl_close($ch);
  11. ?>
複製代碼


上面過程中第二步最為關鍵,可以設置一些高級設置。而且curl的參數設置有很多詳細參數的介紹都寫下來估計要幾十頁吧。


下面再說一種curl的應用,第一個使用代理ip抓取某網頁內容。為什麼要使用代理進行抓取呢?以搜尋引擎為例吧,如果去抓索引擎的數據,短時間內抓的很頻繁的話,你就抓取不到了。索引擎對你的ip地址做限制這個時候,你可以換代理重新抓。


下面看代碼:

  1. <?php

  2. $ch= curl_init;
  3. curl_setopt($ch, CURLOPT_URL,"http://www.iruohong.com");
  4. curl_setopt($ch, CURLOPT_HEADER, false);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
  7. curl_setopt($ch, CURLOPT_PROXY, 1.1.1.1:8080); //這裡是代理ip
  8. //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密碼的話,加上這個

  9. $result=curl_exec($ch);
  10. curl_close($ch);
  11. ?>
複製代碼


其實curl能用到的地方很多比如模擬登錄了,某些網頁有訪問限制了什麼的都可以用curl去做。


參考文章

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-16 20:28 , Processed in 0.091733 second(s), 23 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表