Linux 抓取網頁方式(curl+wget) .

Linux抓取網頁,簡單方法是直接通過 curl 或 wget 兩種命令。

curl 和 wget 命令,目前已經支持Linux和Windows平臺,後續將介紹。



curl 和 wget支持協議

curl  支持 http,https,ftp,ftps,scp,telnet等網絡協議,詳見手冊 man curl

wget支持 http,https,ftp網絡協議,詳見手冊man wget


curl 和 wget下載安裝

1、Ubuntu平臺

wget 命令安裝:  sudo apt-get install wget (普通用戶登錄,需輸入密碼; root賬戶登錄,無需輸入密碼)

curl   命令安裝:  sudo apt-get install curl   (同 wget)

2、Windows平臺

wget 下載地址:wget for Windows

curl   下載地址:curl  Download

wget 和 curl 打包下載地址:Windows平臺下的wget和curl工具包


Windows平臺下,curl下載解壓後,直接是curl.exe格式,拷貝到系統命令目錄下 C:\Windows\System32 即可

Windows平臺下,wget下載解壓後,是wget-1.11.4-1-setup.exe格式,需要安裝;安裝後,在環境變量 - 系統變量 - Path 中添加其安裝目錄即可



curl 和 wget抓取實例

抓取網頁,主要有url 網址和proxy代理兩種方式,下面以抓取“百度”首頁爲例,分別介紹


1、 url 網址方式抓取

(1)curl下載百度首頁內容,保存在baidu_html文件中

curl  http://www.baidu.com/  -o  baidu_html


(2)wget下載百度首頁內容,保存在baidu_html文件中

wget http://www.baidu.com/  -O  baidu_html2


有的時候,由於網速/數據丟包/服務器宕機/等原因,導致暫時無法成功下載網頁

這時,可能就需要多次嘗試發送連接,請求服務器的響應;如果多次仍無響應,則可以確認服務器出問題了

(1)curl多次嘗試連接

curl --retry 10 --retry-delay 60 --retry-max-time 60 http://www.baidu.com/ -o baidu_html

注: --retry表示重試次數; --retry-delay表示兩次重試之間的時間間隔(秒爲單位); --retry-max-time表示在此最大時間內只容許重試一次(一般與--retry-delay相同)


(2)wget多次嘗試連接

wget -t 10 -w 60 -T 30 http://www.baidu.com/ -O baidu_html2

注:-t(--tries)表示重試次數; -w表示兩次重試之間的時間間隔(秒爲單位); -T表示連接超時時間,如果超時則連接不成功,繼續嘗試下一次連接


附: curl 判斷服務器是否響應,還可以通過一段時間內下載獲取的字節量來間接判斷,命令格式如下:

curl -y 60 -Y 1 -m 60 http://www.baidu.com/ -o baidu_html

注:-y表示測試網速的時間; -Y表示-y這段時間下載的字節量(byte爲單位); -m表示容許請求連接的最大時間,超過則連接自動斷掉放棄連接



2、 proxy代理方式抓取

proxy代理下載,是通過連接一臺中間服務器間接下載url網頁的過程,不是url直接連接網站服務器下載

兩個著名的免費代理網站:

freeproxylists.net(全球數十個國家的免費代理,每日都更新)

xroxy.com(通過設置端口類型、代理類型、國家名稱進行篩選)

在freeproxylists.net網站,選擇一臺中國的免費代理服務器爲例,來介紹proxy代理抓取網頁:

218.107.21.252:8080(ip爲218.107.21.252;port爲8080,中間以冒號“:”隔開,組成一個套接字)


(1)curl 通過代理抓取百度首頁

curl -x 218.107.21.252:8080 -o aaaaa http://www.baidu.com(port 常見有80,8080,8086,8888,3128等,默認爲80)

注:-x表示代理服務器(ip:port),即curl先連接到代理服務器218.107.21.252:8080,然後再通過218.107.21.252:8080下載百度首頁,最後218.107.21.252:8080把下載的百度首頁傳給curl至本地(curl不是直接連接百度服務器下載首頁的,而是通過一箇中介代理來完成)


(2)wget 通過代理抓取百度首頁

wget通過代理下載,跟curl不太一樣,需要首先設置代理服務器的http_proxy=ip:port

以ubuntu爲例,在當前用戶目錄(cd ~),新建一個wget配置文件(.wgetrc),輸入代理配置:

http_proxy=218.107.21.252:8080

然後再輸入wget抓取網頁的命令:

wget http://www.baidu.com -O baidu_html2


代理下載截圖:



=======================

抓取的百度首頁數據(截圖):



其它命令參數用法,同url網址方式,在此不再贅述

ftp協議、迭代子目錄等更多的curl 和 wget用法,可以man查看幫助手冊

發佈了21 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章