歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux抓取網頁方式(curl+wget)

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

日期:2017/2/27 15:56:09   编辑:Linux教程

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

curl 和 wget支持協議

curl 支持 http,https,ftp,ftps,scp,telnet等網絡協議

wget支持 http,https,ftp網絡協議

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查看幫助手冊

知識拓展:

在國內,由於某種原因一般難以直接訪問國外某些敏感網站,需要通過 VPN 或 代理服務器才能訪問

如果校園網和教育網有IPv6,則可以通過sixxs.org免費代理訪問facebook、twitter、六維空間等網站

其實,除了VPN 和 IPv6+sixxs.org代理方式外,普通用戶還是有其它途徑訪問到國外網站

下面介紹兩個著名的免費代理網站:

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

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

curl 項目實例

使用curl + freeproxylists.net免費代理,實現了全球12國家google play游戲排名的網頁抓取以及趨勢圖查詢(抓取網頁模塊全部使用Shell編寫,核心代碼約1000行)

Copyright © Linux教程網 All Rights Reserved