1. 程式人生 > >爬蟲—01-爬蟲原理與資料抓取

爬蟲—01-爬蟲原理與資料抓取

爬蟲的更多用途

12306搶票
網站上的頭票
簡訊轟炸

關於Python網路爬蟲,我們需要學習的有:

  1. Python基礎語法學習(基礎知識)
  2. 對HTML頁面的內容抓取(資料抓取)
  3. 對HTML頁面的資料提取(資料提取)
  4. Scrapy框架以及scrapy-redis分散式策略(第三方框架)
  5. 爬蟲(Spider)、反爬蟲(Anti-Spider)、反反爬蟲(Anti-Anti-Spider)之間的鬥爭….

通用爬蟲和聚焦爬蟲

根據使用場景,網路爬蟲可分為 通用爬蟲聚焦爬蟲 兩種.

通用爬蟲

通用網路爬蟲 是 捜索引擎抓取系統(Baidu、Google、Yahoo等)的重要組成部分。主要目的是將網際網路上的網頁下載到本地,形成一個網際網路內容的映象備份。

通用搜索引擎(Search Engine)工作原理

通用網路爬蟲 從網際網路中搜集網頁,採集資訊,這些網頁資訊用於為搜尋引擎建立索引從而提供支援,它決定著整個引擎系統的內容是否豐富,資訊是否即時,因此其效能的優劣直接影響著搜尋引擎的效果。

第一步:抓取網頁

搜尋引擎網路爬蟲的基本工作流程如下:

首先選取一部分的種子URL,將這些URL放入待抓取URL佇列;

取出待抓取URL,解析DNS得到主機的IP,並將URL對應的網頁下載下來,儲存進已下載網頁庫中,並且將這些URL放進已抓取URL佇列。

分析已抓取URL佇列中的URL,分析其中的其他URL,並且將URL放入待抓取URL佇列,從而進入下一個迴圈....

搜尋引擎如何獲取一個新網站的URL:

  1. 在其他網站上設定新網站外鏈(儘可能處於搜尋引擎爬蟲爬取範圍)
  2. 搜尋引擎和DNS解析服務商(如DNSPod等)合作,新網站域名將被迅速抓取。

但是搜尋引擎蜘蛛的爬行是被輸入了一定的規則的,它需要遵從一些命令或檔案的內容,如標註為nofollow的連結,或者是Robots協議。

Robots協議(也叫爬蟲協議、機器人協議等),全稱是“網路爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協議告訴搜尋引擎哪些頁面可以抓取,哪些頁面不能抓取,例如:

淘寶網:https://www.taobao.com/robots.txt

騰訊網: http://www.qq.com/robots.txt
第二步:資料儲存

搜尋引擎通過爬蟲爬取到的網頁,將資料存入原始頁面資料庫。其中的頁面資料與使用者瀏覽器得到的HTML是完全一樣的。

搜尋引擎蜘蛛在抓取頁面時,也做一定的重複內容檢測,一旦遇到訪問權重很低的網站上有大量抄襲、採集或者複製的內容,很可能就不再爬行。

第三步:預處理

搜尋引擎將爬蟲抓取回來的頁面,進行各種步驟的預處理。

提取文字
中文分詞
消除噪音(比如版權宣告文字、導航條、廣告等……)
索引處理
連結關係計算
特殊檔案處理
....

除了HTML檔案外,搜尋引擎通常還能抓取和索引以文字為基礎的多種檔案型別,如 PDF、Word、WPS、XLS、PPT、TXT 檔案等。我們在搜尋結果中也經常會看到這些檔案型別。

但搜尋引擎還不能處理圖片、視訊、Flash 這類非文字內容,也不能執行指令碼和程式。第四步:提供檢索服務,網站排名

搜尋引擎在對資訊進行組織和處理後,為使用者提供關鍵字檢索服務,將使用者檢索相關的資訊展示給使用者。

同時會根據頁面的PageRank值(連結的訪問量排名)來進行網站排名,這樣Rank值高的網站在搜尋結果中會排名較前,當然也可以直接使用 Money 購買搜尋引擎網站排名,簡單粗暴。

課外閱讀:Google搜尋引擎的工作原理但是,這些通用性搜尋引擎也存在著一定的侷限性

通用搜索引擎所返回的結果都是網頁,而大多情況下,網頁裡90%的內容對使用者來說都是無用的。

不同領域、不同背景的使用者往往具有不同的檢索目的和需求,搜尋引擎無法提供針對具體某個使用者的搜尋結果。

全球資訊網資料形式的豐富和網路技術的不斷髮展,圖片、資料庫、音訊、視訊多媒體等不同資料大量出現,通用搜索引擎對這些檔案無能為力,不能很好地發現和獲取。

通用搜索引擎大多提供基於關鍵字的檢索,難以支援根據語義資訊提出的查詢,無法準確理解使用者的具體需求。

針對這些情況,聚焦爬蟲技術得以廣泛使用。

聚焦爬蟲

聚焦爬蟲,是”面向特定主題需求”的一種網路爬蟲程式,它與通用搜索引擎爬蟲的區別在於: 聚焦爬蟲在實施網頁抓取時會對內容進行處理篩選,儘量保證只抓取與需求相關的網頁資訊。而我們今後要學習的網路爬蟲,就是聚焦爬蟲。

HTTP和HTTPS

HTTP協議(HyperText Transfer Protocol,超文字傳輸協議):是一種釋出和接收 HTML頁面的方法。

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)簡單講是HTTP的安全版,在HTTP下加入SSL層。

SSL(Secure Sockets Layer 安全套接層)主要用於Web的安全傳輸協議,在傳輸層對網路連線進行加密,保障在Internet上資料傳輸的安全。

HTTP的埠號為80,
HTTPS的埠號為443

HTTP的請求與響應

HTTP通訊由兩部分組成: 客戶端請求訊息伺服器響應訊息

瀏覽器傳送HTTP請求的過程:
當用戶在瀏覽器的位址列中輸入一個URL並按回車鍵之後,瀏覽器會向HTTP伺服器傳送HTTP請求。HTTP請求主要分為“Get”和“Post”兩種方法。

當我們在瀏覽器輸入URL http://www.baidu.com 的時候,瀏覽器傳送一個Request請求去獲取 http://www.baidu.com 的html檔案,伺服器把Response檔案物件傳送回給瀏覽器。

瀏覽器分析Response中的 HTML,發現其中引用了很多其他檔案,比如Images檔案,CSS檔案,JS檔案。 瀏覽器會自動再次傳送Request去獲取圖片,CSS檔案,或者JS檔案。

當所有的檔案都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。

URL(Uniform / Universal Resource Locator的縮寫):統一資源定位符,是用於完整地描述Internet上網頁和其他資源的地址的一種標識方法。

基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]

scheme:協議(例如:http, https, ftp)
host:伺服器的IP地址或者域名
port#:伺服器的埠(如果是走協議預設埠,預設埠80)
path:訪問資源的路徑
query-string:引數,傳送給http伺服器的資料
anchor:錨(跳轉到網頁的指定錨點位置)

例如:

ftp://192.168.0.116:8080/index

http://www.baidu.com

http://item.jd.com/11936238.html#product-detail
客戶端HTTP請求

URL只是標識資源的位置,而HTTP是用來提交和獲取資源。客戶端傳送一個HTTP請求到伺服器的請求訊息,包括以下格式:

請求行請求頭部空行請求資料

四個部分組成。

一個典型的HTTP請求示例
GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://www.baidu.com/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: BAIDUID=04E4001F34EA74AD4601512DD3C41A7B:FG=1; BIDUPSID=04E4001F34EA74AD4601512DD3C41A7B; PSTM=1470329258; MCITY=-343%3A340%3A; BDUSS=nF0MVFiMTVLcUh-Q2MxQ0M3STZGQUZ4N2hBa1FFRkIzUDI3QlBCZjg5cFdOd1pZQVFBQUFBJCQAAAAAAAAAAAEAAADpLvgG0KGyvLrcyfrG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFaq3ldWqt5XN; H_PS_PSSID=1447_18240_21105_21386_21454_21409_21554; BD_UPN=12314753; sug=3; sugstore=0; ORIGIN=0; bdime=0; H_PS_645EC=7e2ad3QHl181NSPbFbd7PRUCE1LlufzxrcFmwYin0E6b%2BW8bbTMKHZbDP0g; BDSVRTM=0
請求方法

GET https://www.baidu.com/ HTTP/1.1

根據HTTP標準,HTTP請求可以使用多種請求方法。

HTTP 0.9:只有基本的文字 GET 功能。

HTTP 1.0:完善的請求/響應模型,並將協議補充完整,定義了三種請求方法: GET, POST 和 HEAD方法。

HTTP 1.1:在 1.0 基礎上進行更新,新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

HTTP 2.0(未普及):請求/響應首部的定義基本沒有改變,只是所有首部鍵必須全部小寫,而且請求行要獨立為 :method、:scheme、:host、:path這些鍵值對。

方法描述
GET 請求指定的頁面資訊,並返回實體主體。
HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
POST 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案),資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。
PUT 從客戶端向伺服器傳送的資料取代指定的文件的內容。
DELETE 請求伺服器刪除指定的頁面。
CONNECT HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
OPTIONS 允許客戶端檢視伺服器的效能。
TRACE 回顯伺服器收到的請求,主要用於測試或診斷。
HTTP請求主要分為Get和Post兩種方法
GET是從伺服器上獲取資料,POST是向伺服器傳送資料

GET請求引數顯示,都顯示在瀏覽器網址上,HTTP伺服器根據該請求所包含URL中的引數來產生響應內容,即“Get”請求的引數是URL的一部分。 例如: http://www.baidu.com/s?wd=Chinese

POST請求引數在請求體當中,訊息長度沒有限制而且以隱式的方式進行傳送,通常用來向HTTP伺服器提交量比較大的資料(比如請求中包含許多引數或者檔案上傳操作等),請求的引數包含在“Content-Type”訊息頭裡,指明該訊息體的媒體型別和編碼,

注意:避免使用Get方式提交表單,因為有可能會導致安全問題。 比如說在登陸表單中用Get方式,使用者輸入的使用者名稱和密碼將在位址列中暴露無遺

常用的請求報頭

1. Host (主機和埠號)

Host:對應網址URL中的Web名稱和埠號,用於指定被請求資源的Internet主機和埠號,通常屬於URL的一部分。

2. Connection (連結型別)

Connection:表示客戶端與服務連線型別

Client 發起一個包含 Connection:keep-alive 的請求,HTTP/1.1使用 keep-alive 為預設值。

Server收到請求後:
    如果 Server 支援 keep-alive,回覆一個包含 Connection:keep-alive 的響應,不關閉連線;
    如果 Server 不支援 keep-alive,回覆一個包含 Connection:close 的響應,關閉連線。

如果client收到包含 Connection:keep-alive 的響應,向同一個連線傳送下一個請求,直到一方主動關閉連線。

keep-alive在很多情況下能夠重用連線,減少資源消耗,縮短響應時間,比如當瀏覽器需要多個檔案時(比如一個HTML檔案和相關的圖形檔案),不需要每次都去請求建立連線。

3. Upgrade-Insecure-Requests (升級為HTTPS請求)

Upgrade-Insecure-Requests:升級不安全的請求,意思是會在載入 http 資源時自動替換成 https 請求,讓瀏覽器不再顯示https頁面中的http請求警報。

*HTTPS 是以安全為目標的 HTTP 通道,所以在 HTTPS 承載的頁面上不允許出現 HTTP 請求,一旦出現就是提示或報錯*。

4. User-Agent (瀏覽器名稱)

User-Agent:是客戶瀏覽器的名稱,以後會詳細講。

5. Accept (傳輸檔案型別)

Accept:指瀏覽器或其他客戶端可以接受的MIME(Multipurpose Internet Mail Extensions(多用途網際網路郵件擴充套件))檔案型別,伺服器可以根據它判斷並返回適當的檔案格式。舉例

Accept: */*:表示什麼都可以接收。

Accept:image/gif:表明客戶端希望接受GIF影象格式的資源;

Accept:text/html:表明客戶端希望接受html文字。

Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示瀏覽器支援的 MIME 型別分別是 html文字、xhtml和xml文件、所有的影象格式資源。

q是權重係數,範圍 0 =< q <= 1,q 值越大,請求越傾向於獲得其“;”之前的型別表示的內容。若沒有指定q值,則預設為1,按從左到右排序順序;若被賦值為0,則用於表示瀏覽器不接受此內容型別。

Text:用於標準化地表示的文字資訊,文字訊息可以是多種字符集和或者多種格式的;Application:用於傳輸應用程式資料或者二進位制資料。詳細請點選

6. Referer (頁面跳轉處)

Referer:表明產生請求的網頁來自於哪個URL,使用者是從該 Referer頁面訪問到當前請求的頁面。這個屬性可以用來跟蹤Web請求來自哪個頁面,是從什麼網站來的等。

有時候遇到下載某網站圖片,需要對應的referer,否則無法下載圖片,那是因為人家做了防盜鏈,原理就是根據referer去判斷是否是本網站的地址,如果不是,則拒絕,如果是,就可以下載;

7. Accept-Encoding(檔案編解碼格式)

Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於檔案格式,它是為了壓縮檔案並加速檔案傳遞速度。瀏覽器在接收到Web響應之後先解碼,然後再檢查檔案格式,許多情形下這可以減少大量的下載時間。

舉例:Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0

如果有多個Encoding同時匹配, 按照q值順序排列,本例中按順序支援 gzip, identity壓縮編碼,支援gzip的瀏覽器會返回經過gzip編碼的HTML頁面。 如果請求訊息中沒有設定這個域伺服器假定客戶端對各種內容編碼都可以接受。

8. Accept-Language(語言種類)

Accept-Langeuage:指出瀏覽器可以接受的語言種類,如en或en-us指英語,zh或者zh-cn指中文,當伺服器能夠提供一種以上的語言版本時要用到。

9. Accept-Charset(字元編碼)

Accept-Charset:指出瀏覽器可以接受的字元編碼。舉例:Accept-Charset:iso-8859-1,gb2312,utf-8

ISO8859-1:通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語言不可缺少的附加字元,英文瀏覽器的預設值是ISO-8859-1.
gb2312:標準簡體中文字符集;
utf-8:UNICODE 的一種變長字元編碼,可以解決多種語言文字顯示問題,從而實現應用國際化和本地化。

如果在請求訊息中沒有設定這個域,預設是任何字符集都可以接受。

Cookie:瀏覽器用這個屬性向伺服器傳送Cookie。Cookie是在瀏覽器中寄存的小型資料體,它可以記載和伺服器相關的使用者資訊,也可以用來實現會話功能,以後會詳細講。

11. Content-Type (POST資料型別)

Content-Type:POST請求裡用來表示的內容型別。舉例:Content-Type = Text/XML; charset=gb2312:

指明該請求的訊息體中包含的是純文字的XML型別的資料,字元編碼採用“gb2312”。

服務端HTTP響應

HTTP響應也由四個部分組成,分別是:狀態行訊息報頭空行響應正文

HTTP/1.1 200 OK
Server: Tengine
Connection: keep-alive
Date: Wed, 30 Nov 2016 07:58:21 GMT
Cache-Control: no-cache
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=20
Vary: Accept-Encoding
Pragma: no-cache
X-NWS-LOG-UUID: bd27210a-24e5-4740-8f6c-25dbafa9c395
Content-Length: 180945

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ....
常用的響應報頭(瞭解)

理論上所有的響應頭資訊都應該是迴應請求頭的。但是服務端為了效率,安全,還有其他方面的考慮,會新增相對應的響應頭資訊,從上圖可以看到:

1. Cache-Control:must-revalidate, no-cache, private。

這個值告訴客戶端,服務端不希望客戶端快取資源,在下次請求資源時,必須要從新請求伺服器,不能從快取副本中獲取資源。

Cache-Control是響應頭中很重要的資訊,當客戶端請求頭中包含Cache-Control:max-age=0請求,明確表示不會快取伺服器資源時,Cache-Control作為作為迴應資訊,通常會返回no-cache,意思就是說,"那就不快取唄"。

當客戶端在請求頭中沒有包含Cache-Control時,服務端往往會定,不同的資源不同的快取策略,比如說oschina在快取圖片資源的策略就是Cache-Control:max-age=86400,這個意思是,從當前時間開始,在86400秒的時間內,客戶端可以直接從快取副本中讀取資源,而不需要向伺服器請求。
2. Connection:keep-alive

這個欄位作為迴應客戶端的Connection:keep-alive,告訴客戶端伺服器的tcp連線也是一個長連線,客戶端可以繼續使用這個tcp連線傳送http請求。

3. Content-Encoding:gzip

告訴客戶端,服務端傳送的資源是採用gzip編碼的,客戶端看到這個資訊後,應該採用gzip對資源進行解碼。

4. Content-Type:text/html;charset=UTF-8

告訴客戶端,資原始檔的型別,還有字元編碼,客戶端通過utf-8對資源進行解碼,然後對資源進行html解析。通常我們會看到有些網站是亂碼的,往往就是伺服器端沒有返回正確的編碼。

5. Date:Sun, 21 Sep 2016 06:18:21 GMT

這個是服務端傳送資源時的伺服器時間,GMT是格林尼治所在地的標準時間。http協議中傳送的時間都是GMT的,這主要是解決在網際網路上,不同時區在相互請求資源的時候,時間混亂問題。

6. Expires:Sun, 1 Jan 2000 01:00:00 GMT

這個響應頭也是跟快取有關的,告訴客戶端在這個時間前,可以直接訪問快取副本,很顯然這個值會存在問題,因為客戶端和伺服器的時間不一定會都是相同的,如果時間不同就會導致問題。所以這個響應頭是沒有Cache-Control:max-age=*這個響應頭準確的,因為max-age=date中的date是個相對時間,不僅更好理解,也更準確。

7. Pragma:no-cache

這個含義與Cache-Control等同。

8.Server:Tengine/1.4.6

這個是伺服器和相對應的版本,只是告訴客戶端伺服器的資訊。

9. Transfer-Encoding:chunked

這個響應頭告訴客戶端,伺服器傳送的資源的方式是分塊傳送的。一般分塊傳送的資源都是伺服器動態生成的,在傳送時還不知道傳送資源的大小,所以採用分塊傳送,每一塊都是獨立的,獨立的塊都能標示自己的長度,最後一塊是0長度的,當客戶端讀到這個0長度的塊時,就可以確定資源已經傳輸完了。

10. Vary: Accept-Encoding

告訴快取伺服器,快取壓縮檔案和非壓縮檔案兩個版本,現在這個欄位用處並不大,因為現在的瀏覽器都是支援壓縮的。

伺服器和客戶端的互動僅限於請求/響應過程,結束之後便斷開,在下一次請求時,伺服器會認為新的客戶端。

為了維護他們之間的連結,讓伺服器知道這是前一個使用者傳送的請求,必須在一個地方儲存客戶端的資訊。

Cookie:通過在 客戶端 記錄的資訊確定使用者的身份。

Session:通過在 伺服器端 記錄的資訊確定使用者的身份。

響應狀態碼

響應狀態程式碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值。

常見狀態碼:
100~199:表示伺服器成功接收部分請求,要求客戶端繼續提交其餘請求才能完成整個處理過程。

200~299:表示伺服器成功接收請求並已完成整個處理過程。常用200(OK 請求成功)。
300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經移動一個新地址、常用302(所請求的頁面已經臨時轉移至新的url)、307和304(使用快取資源)。
400~499:客戶端的請求有錯誤,常用404(伺服器無法找到被請求的頁面)、403(伺服器拒絕訪問,許可權不夠)。
500~599:伺服器端出現錯誤,常用500(請求未完成。伺服器遇到不可預知的情況)。

HTTP響應狀態碼參考:

1xx:資訊

100 Continue
伺服器僅接收到部分請求,但是一旦伺服器並沒有拒絕該請求,客戶端應該繼續傳送其餘的請求。
101 Switching Protocols
伺服器轉換協議:伺服器將遵從客戶的請求轉換到另外一種協議。

2xx:成功

200 OK
請求成功(其後是對GET和POST請求的應答文件)
201 Created
請求被建立完成,同時新的資源被建立。
202 Accepted
供處理的請求已被接受,但是處理未完成。
203 Non-authoritative Information
文件已經正常地返回,但一些應答頭可能不正確,因為使用的是文件的拷貝。
204 No Content
沒有新文件。瀏覽器應該繼續顯示原來的文件。如果使用者定期地重新整理頁面,而Servlet可以確定使用者文件足夠新,這個狀態程式碼是很有用的。
205 Reset Content
沒有新文件。但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。
206 Partial Content
客戶傳送了一個帶有Range頭的GET請求,伺服器完成了它。

3xx:重定向

300 Multiple Choices
多重選擇。連結列表。使用者可以選擇某連結到達目的地。最多允許五個地址。
301 Moved Permanently
所請求的頁面已經轉移至新的url。
302 Moved Temporarily
所請求的頁面已經臨時轉移至新的url。
303 See Other
所請求的頁面可在別的url下被找到。
304 Not Modified
未按預期修改文件。客戶端有緩衝的文件併發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文件)。伺服器告訴客戶,原來緩衝的文件還可以繼續使用。
305 Use Proxy
客戶請求的文件應該通過Location頭所指明的代理伺服器提取。
306 Unused
此程式碼被用於前一版本。目前已不再使用,但是程式碼依然被保留。
307 Temporary Redirect
被請求的頁面已經臨時移至新的url。

4xx:客戶端錯誤

400 Bad Request
伺服器未能理解請求。
401 Unauthorized
被請求的頁面需要使用者名稱和密碼。
401.1
登入失敗。
401.2
伺服器配置導致登入失敗。
401.3
由於 ACL 對資源的限制而未獲得授權。
401.4
篩選器授權失敗。
401.5
ISAPI/CGI 應用程式授權失敗。
401.7
訪問被 Web 伺服器上的 URL 授權策略拒絕。這個錯誤程式碼為 IIS 6.0 所專用。
402 Payment Required
此程式碼尚無法使用。
403 Forbidden
對被請求頁面的訪問被禁止。
403.1
執行訪問被禁止。
403.2
讀訪問被禁止。
403.3
寫訪問被禁止。
403.4
要求 SSL。
403.5
要求 SSL 128。
403.6
IP 地址被拒絕。
403.7
要求客戶端證書。
403.8
站點訪問被拒絕。
403.9
使用者數過多。
403.10
配置無效。
403.11
密碼更改。
403.12
拒絕訪問對映表。
403.13
客戶端證書被吊銷。
403.14
拒絕目錄列表。
403.15
超出客戶端訪問許可。
403.16
客戶端證書不受信任或無效。
403.17
客戶端證書已過期或尚未生效。
403.18
在當前的應用程式池中不能執行所請求的 URL。這個錯誤程式碼為 IIS 6.0 所專用。
403.19
不能為這個應用程式池中的客戶端執行 CGI。這個錯誤程式碼為 IIS 6.0 所專用。
403.20
Passport 登入失敗。這個錯誤程式碼為 IIS 6.0 所專用。
404 Not Found
伺服器無法找到被請求的頁面。
404.0
沒有找到檔案或目錄。
404.1
無法在所請求的埠上訪問 Web 站點。
404.2
Web 服務擴充套件鎖定策略阻止本請求。
404.3
MIME 對映策略阻止本請求。
405 Method Not Allowed
請求中指定的方法不被允許。
406 Not Acceptable
伺服器生成的響應無法被客戶端所接受。
407 Proxy Authentication Required
使用者必須首先使用代理伺服器進行驗證,這樣請求才會被處理。
408 Request Timeout
請求超出了伺服器的等待時間。
409 Conflict
由於衝突,請求無法被完成。
410 Gone
被請求的頁面不可用。
411 Length Required
"Content-Length" 未被定義。如果無此內容,伺服器不會接受請求。
412 Precondition Failed
請求中的前提條件被伺服器評估為失敗。
413 Request Entity Too Large
由於所請求的實體的太大,伺服器不會接受請求。
414 Request-url Too Long
由於url太長,伺服器不會接受請求。當post請求被轉換為帶有很長的查詢資訊的get請求時,就會發生這種情況。
415 Unsupported Media Type
由於媒介型別不被支援,伺服器不會接受請求。
416 Requested Range Not Satisfiable
伺服器不能滿足客戶在請求中指定的Range頭。
417 Expectation Failed
執行失敗。
423
鎖定的錯誤。

5xx:伺服器錯誤

500 Internal Server Error
請求未完成。伺服器遇到不可預知的情況。
500.12
應用程式正忙於在 Web 伺服器上重新啟動。
500.13
Web 伺服器太忙。
500.15
不允許直接請求 Global.asa。
500.16
UNC 授權憑據不正確。這個錯誤程式碼為 IIS 6.0 所專用。
500.18
URL 授權儲存不能開啟。這個錯誤程式碼為 IIS 6.0 所專用。
500.100
內部 ASP 錯誤。
501 Not Implemented
請求未完成。伺服器不支援所請求的功能。
502 Bad Gateway
請求未完成。伺服器從上游伺服器收到一個無效的響應。
502.1
CGI 應用程式超時。 ·
502.2
CGI 應用程式出錯。
503 Service Unavailable
請求未完成。伺服器臨時過載或當機。
504 Gateway Timeout
閘道器超時。
505 HTTP Version Not Supported
伺服器不支援請求中指明的HTTP協議版本

相關推薦

爬蟲01-爬蟲原理資料

爬蟲的更多用途 12306搶票 網站上的頭票 簡訊轟炸 關於Python網路爬蟲,我們需要學習的有: Python基礎語法學習(基礎知識) 對HTML頁面的內容抓取(資料抓取) 對HTML頁面的資料提取(資料提取) Scrapy框架以及scrapy-redis分散式策略(第三方框架) 爬蟲(Spider

爬蟲原理資料-----HTTP和HTTPS的請求響應

HTTP和HTTPS HTTP協議(HyperText Transfer Protocol,超文字傳輸協議):是一種釋出和接收 HTML頁面的方法。 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)簡單講是HTTP的安全版,在HTTP下加入

爬蟲原理資料----- urllib2:GET請求和POST請求

urllib2預設只支援HTTP/HTTPS的GET和POST方法 urllib.urlencode() urllib 和 urllib2 都是接受URL請求的相關模組,但是提供了不同的功能。兩個最顯著的不同如下: urllib 僅可以接受URL,不能建立 設定了headers 的Request 類例項

爬蟲(一):爬蟲原理資料

1.通用爬蟲和聚焦爬蟲 根據使用場景,網路爬蟲可分為 通用爬蟲 和 聚焦爬蟲 兩種. 通用爬蟲 通用網路爬蟲 是 捜索引擎抓取系統(Baidu、Google、Yahoo等)的重要組成部分。主要目的是將網際網路上的網頁下載到本地,形成一個網際網路內容的映象備份 聚焦爬蟲

爬蟲[1]---頁面分析及資料

頁面分析及資料抓取 anaconda + scrapy 安裝:https://blog.csdn.net/dream_dt/article/details/80187916 用 scrapy 初始化一個爬蟲:https://blog.csdn.net/dream_dt/article

爬蟲實戰-酷狗音樂資料--XPath,Pyquery,Beautifulsoup資料提取對比實戰

網站: http://www.kugou.com/yy/html/rank.html 爬取目標: 酷酷狗飆升榜的歌手,歌曲名字,歌曲連結等內容,存到Mysql資料庫中 網頁解析: 此次爬取採用三種解析方式: 程式碼如下: import requests from l

Python 爬蟲工程師必學——App資料實戰

第1章 課程介紹 介紹課程目標、通過課程能學習到的內容、學會這些技能能做什麼,對公司業務有哪些幫助,對個人有哪些幫助。介紹目前app資料抓取有哪些困難,面臨的挑戰,本實戰課程會利用哪些工具來解決這些問題,以及本實戰課程的特點 ... 1-1 python爬蟲工程師必備技

某課《Python 爬蟲工程師必學 App資料實戰》

第1章 課程介紹 介紹課程目標、通過課程能學習到的內容、學會這些技能能做什麼,對公司業務有哪些幫助,對個人有哪些幫助。介紹目前app資料抓取有哪些困難,面臨的挑戰,本實戰課程會利用哪些工具來解決這些問題,以及本實戰課程的特點 ... 1-1 python爬蟲工程師必備技

Python 爬蟲工程師必學 App資料實戰

第5章 移動端自動化控制工具詳講 本章首先介紹了android開發環境的安裝,為講解uiautomatorviewer工具做準備,android開發環境安裝成功後介紹了uiautomatorviewer工具對app應用介面進行分析,節點定位、xpath編寫 介紹了appium-desktop工具的錄製

Python 爬蟲工程師必學 App資料實戰目前最完整

第1章 課程介紹 介紹課程目標、通過課程能學習到的內容、學會這些技能能做什麼,對公司業務有哪些幫助,對個人有哪些幫助。介紹目前app資料抓取有哪些困難,面臨的挑戰,本實戰課程會利用哪些工具來解決這些問題,以及本實戰課程的特點 ... 1-1 python爬蟲工程師必備技

scrapy安裝資料

scrapy安裝 pip install Scrapy 如果需要vs c++的話可能是因為要用到twisted,可以到 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下載,然後在本地下載的目錄下在位址列輸入cmd,然後pip

Python爬蟲之使用正則表示式資料

目錄 匹配標籤 匹配title標籤 a標籤 table標籤 匹配標籤裡面的屬性 匹配a標籤裡面的URL 匹配img標籤裡的 src 相關文章:Linux中的正則表示式             &nbs

Python爬蟲實習筆記 | Week4 專案資料反思

2018/11/05 1.所思所想: 今天我把Python爬蟲實戰這本書Chapter6看完,很有感觸的一點是,書本中對爬蟲實現的模組化設計很給我靈感,讓我對專案中比較無語的函式拼接有了解決之道,內省還是比較興奮。此外,在吃飯問題上需要認真思考下,是否應注意合理的膳食,是否應對要吃的進行好好考究。下

爬蟲--python3.6+selenium+BeautifulSoup實現動態網頁的資料,適用於對頻率不高的情況

說在前面: 本文主要介紹如何抓取 頁面載入後需要通過JS載入的資料和圖片 本文是通過python中的selenium(pyhton包) + chrome(谷歌瀏覽器) + chromedrive(谷歌瀏覽器驅動) chrome 和chromdrive建議都下最新版本(參考地址:https://blog.c

網頁資料--爬蟲

       資料抓取其實從字面意思就知道它是抓取資料的,在網際網路世界中,資料量是一個非常大的。。有時候靠人為去獲取資料這是一個非常不明智的。尤其是你需要的資料來自很多不同的地方。        

Python爬蟲:十分鐘實現從資料資料API提供

  依舊先從爬蟲的基本概念說起,你去做爬蟲做資料抓取,第一件事想必是去檢視目標網站是否有api。有且可以使用的話,皆大歡喜。   假如目標網站自身不提供api,但今天你心情不好就想用api來抓資料,那

網路爬蟲/資料,反爬蟲(更新版)

知己知彼,百戰不殆 想要反網路爬蟲,首先需要了解網路爬蟲,基本概念不說了,這裡主要對網路爬蟲的特徵進行闡述: 大多數是高訪問量; 大多數是定時(可加入salt隨機時間); IP基本固定/不變(IP代理可跳過); 如何反爬蟲 反爬蟲的思路主要是區別爬蟲

新浪微博爬蟲分享(一天可 1300 萬條資料

爬蟲功能: 此專案和QQ空間爬蟲類似,主要爬取新浪微博使用者的個人資訊、微博資訊、粉絲和關注(詳細見此)。 程式碼獲取新浪微博Cookie進行登入,可通過多賬號登入來防止新浪的反扒(用來登入的賬號可從淘寶購買,一塊錢七個)。 專案爬的是新浪微

Python爬蟲入門教程 21-100 網易雲課堂課程資料

寫在前面 今天咱們抓取一下網易雲課堂的課程資料,這個網站的資料量並不是很大,我們只需要使用requests就可以快速的抓取到這部分資料了。 你第一步要做的是開啟全部課程的地址,找出爬蟲規律, 地址如下: https://study.163.com/courses/ 我簡單的看了一下,頁面資料是基於

Python爬蟲入門教程 22-100 CSDN學院課程資料

1. CSDN學院課程資料-寫在前面 今天又要抓取一個網站了,選擇恐懼症使得我不知道該拿誰下手,找來找去,算了,還是抓取CSDN學院吧,CSDN學院的網站為 https://edu.csdn.net/courses 我看了一下這個網址,課程數量也不是很多,大概有 6000+ 門課程,資料量不大,用單執行緒其