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

來源:互聯網
上載者:User

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 伺服器為例,來介紹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表示Proxy 伺服器(ip:port),即curl先串連到Proxy 伺服器218.107.21.252:8080,然後再通過218.107.21.252:8080下載百度首頁,最後218.107.21.252:8080把下載的百度首頁傳給curl至本地(curl不是直接連接百度伺服器下載首頁的,而是通過一個中介代理來完成)

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

wget通過代理下載,跟curl不太一樣,需要首先設定Proxy 伺服器的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 或 Proxy 伺服器才能訪問

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

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

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

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

xroxy.com(通過設定連接埠類型、代理類型、國家名稱進行篩選)

curl 項目執行個體

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

遊戲排名趨勢圖請見我先前的部落格:JFreeChart項目執行個體

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.