1. 程式人生 > >[wget]分享自己爬api文件使用過的幾個引數

[wget]分享自己爬api文件使用過的幾個引數

因為國外網站訪問速度和被牆的原因,總是不能很愉快的找文件,這時候離線下來是個好的選擇,這裡選擇使用wget這個指令。

-mirror是wget下的很強的引數,意為映象,適合用來爬站。

1、wget -mirror -p -convert-links URL

-convert-links 會把下載的網頁轉換成本地的連結,如果不加入這個引數,頁面中的連結不能指向本地的網頁,所以必加,-p會把網頁所需要的資源一起爬下來,比如圖片,聲音,css,但是外鏈資源不會被爬下來,這個問題做著如下說:

Note that Wget will behave as if -r had been specified, but only
that single page and its requisites will be downloaded.  Links from
that page to external documents will not be followed.  Actually, to
download a single page and all its requisites (even if they exist
 on separate websites), and make sure the lot displays properly
 locally, this author likes to use a few options in addition to -p:

wget -E -H -k -K -p http://<site>/<document>

2、不過使用第一個指令會出現一個問題,比如說要爬的文件是網站的某個子目錄,比如說:http://xxx.com/xxx/doc.html,如果這個時候用-mirro這個指令的話它會從頭爬到尾,把整個站都原原本本的爬下來,這個是不需要的,所以要加上-np這個指令,意為不爬上層目錄,這樣你指定哪個連結他就從哪個連結開始下載,遇到返回上層目錄的情況就不下載。

3、對於網站特別大的那種,而且網路部是特別好的情況下,一次請求連結可能不成功,需要多次請求,但是一次失敗等待900秒,很長,我一般會加上這個指令 -T 5 -t 20 ,意為5秒再嘗試,20次嘗試次數,可以酌情調整。

4、爬站時會出現403 forbidden,原因是沒有請求頭,我是這麼搞得。

右邊的user-agent就是請求頭了,直接賦值就可以了,閒麻煩可以直接用下面這個,增加請求頭的指令-U

wget -U 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:48.0) Gecko/20100101 Firefox/48.0'

5、有些網站需要登入才能檢視資訊,這個時候需要cookies,下面這幾個必加。

-cookies=on

--keep-session-cookies

--load-cookies=cookies.txt

--save-cookies=cookies.txt

匯出cookies我是在firefox遊覽器下裝export cookies外掛匯出的,載入的時候,比如說我在/home/user/document/下執行wget指令,那就把cookies.txt放到/home/user/document/下就可以載入到這個cookies.txt了。

6、中文站爬下來的時候會轉義形成亂碼,加上指令-restrict-file-names=nocontrol

差不多用到這些就夠了,爬一個文件的完整指令應該如下:

wget  -mirror  -p -np -convert-links -mirror -cookies=on --keep-session-cookies --load-cookies=cookies.txt  --save-cookies=cookies.txt --restrict-file-names=nocontrol  -U 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:48.0) Gecko/20100101 Firefox/48.0' -T 5  -t 20 URL

可根據自己的需求自己修改,並不一定要按部就班。

最後,-O這個指令可以輸出到管道,有了管道cat、grep、awk就隨便你了,不再贅述。

相關推薦

[wget]分享自己api使用引數

因為國外網站訪問速度和被牆的原因,總是不能很愉快的找文件,這時候離線下來是個好的選擇,這裡選擇使用wget這個指令。 -mirror是wget下的很強的引數,意為映象,適合用來爬站。 1、wget -mirror -p -convert-links URL -convert

【硬核教程】只需1秒—你也可以有自己API

Nothing is true. Everything is permitted. 寫在前面 先聊聊為什麼想到了要用Vuepress來代替原來寫在Confluence上的文件。 大意是有個需要其他部門接入的專案,這個專案有個用md寫的接入文件,其他部門的人需要看著這個文件才知道怎麼接以及哪些東西需要

Web Api 2.0中使用Swagger生成Api的2小Tips

當Web Api 2.0使用OAuth2授權時,如何在Swagger中新增Authorization請求頭? Swagger說明文件支援手動呼叫Api, 但是當Api使用OAuth2授權時,由於沒有地方可以輸入授權Token, 導致響應結果一直是401沒有授權。

NetApp FAS2240-4存儲誤刪除月後如何恢復數據

存儲數據恢復 誤刪除數據恢復 netAPP存儲數據恢復 服務器數據恢復背景:北京某公司有一臺服務器netAPP存儲因為誤刪除文件夾需要進行數據恢復操作,服務器中一共有24塊磁盤,管理員在工作中誤刪除了存儲中某重要文件夾,三個月後管理員才意識到這一操作帶來的嚴重後果並嘗試尋找一家北京的數據恢復公司上

怎樣提取PDF其中頁面

需要 範圍 技術 strong 轉換器 文件添加 進入 自己的 vpd 我們平常在處理一份文件的時候,可能對於文件裏面的幾頁進行編輯和修改,那麽就需要將這幾個頁面提取出來,我們該怎麽解決呢?就拿遇到的PDF格式文件來說,怎樣提取PDF文件其中幾個頁面呢?想要知道的小夥伴可以

HTTP協議規範RFC版本更新

June 1999,  HTTP Authentication: Basic and Digest Access Authentication:https://www.rfc-editor.org/rfc/rfc2617.txt

用python(2.7)把文字分成

    在今天下了一個.txt格式的檔案,不過內容很多有12M,所以想分成幾個小的檔案。想到用python,查了一下,用了很磋的辦法,不管啦,關鍵是達到目的麼,以後有更好的辦法再更新麼^_^ inputFile = file("xianni.txt","r") partNu

Hadoop 查看某個分成塊,分別在那臺機架的哪個機器上

from and 在那 blocks num baidu aid val yml 命令是 hadoop fsck /g6/input/baidu.log -files -blocks -locations -racks [[email protected] ~]$

026_生成自己專案的API

一、什麼是API   API即Application Programming Interface的首字母縮寫、應用程式程式設計介面。 二、常用的註釋標籤   在生成API之前我們需瞭解一下jdk為我們提供的幾個註釋標籤     @Author 作者     @versi

JAVA專案註釋規範&&生成自己專案的API

一、專案文件開頭註釋 /** * 1.類的描述&&詳細功能介紹 * 2.@author ..... * / 二、每個方法的註釋 /** * 1.方法的功能 *

日誌大的問題

xweb stp net web mst 大小 sta size ams 本次發布會造成..\Camstar\Camstar WCF Services\web.config 內容增加非常大,會造成登錄錯誤: HKEY_LOCAL_MACHINESOFTWARE\Mi

zabbix 歷史數據清理及libdata1大處理

博客 查看 res oca localhost eight temp 51cto mysql 一 歷史數據清理 停止相關服務,避免寫入數據/etc/init.d/zabbix-server stop /etc/init.d/httpd stop 清空歷史數據m

java寫入種方法分享

java一、FileWritter寫入文件 FileWritter,字符流寫入字符到文件。默認情況下,它會使用新的內容取代所有現有的內容,然而,當指定一個真(布爾)值作為FileWritter構造函數的第二個參數,它會保留現有的內容,並追加新內容在文件的末尾。 替換所有現有的內容與新的內容。

發布IIS後 上傳大失敗解決方案

失敗 限定 .cn 方案 文件 iis images 分享 src 下面上圖不多BB IIS上找到這玩意 然後左上角的節裏面輸入:system.webServer/security/requestFiltering 然後如下圖: 這裏是限定了30000000子節點

ios 創建自己的.a

一個 環境 -o 設置 mman ios 靜態 模擬器 put 1:首先創建個 靜態工程(Cocoa Touch Static Library); 方法名字,一定要暴露在.h文件中, 2:分別在模擬器環境和真機環境下 Analyze (shift+command+B)

寫了小工具分享:按關鍵字在數據中搜索數據行

tor ffi doc qt3 ngx log 文件 cnblogs weibo 瘧鑰磷4cn0g鄧票纖http://t.docin.com/sina_6372016379囊評門3qykd瘓舜戲http://weibo.com/p/1005055850649325妹扯燃3y

win32 api 和目錄管理

spa logs 當前 獲取 efi length ttr 重命名 turn BOOL DeleteFile ( LPCTSTR lpFileName ); //刪除文件 BOOL CopyFile ( LPCTSTR lpExistingFileN

PCB大的解決方法

ide clas embed 選項 選擇 解決方法 設置 div nbsp 在遇到了PCB文件過大的問題後,在網上搜索有朋友已經遇到這個問題了,解決方法和原理,主要是字體在文件裏面占了太大的比重,設置方法:在PCB編輯時按快捷鍵T-P-左邊欄裏選擇True Type Fon

spring boot 上傳 大 FileUploadBase$SizeLimitExceed

prop post class exce 1.4 part tip exc log application.properties中加入 multipart.maxFileSizemultipart.maxRequestSize Spring Boot 1.3.x或者之前 m

Jenkins日誌大解決方案

Jenkins一、寫定時任務刪除日誌文件 # crontab -e * * * * */1 rm -rf /var/log/jenkins/* 二、修改jenkins日誌的級別 解決方案1:使用java.util.logging:創建一個文件logging.properties,您可以在其中定義日誌級別和