Python 爬蟲必備小知識點一

2021-10-19 08:31:25 字數 1806 閱讀 1565

1.url和uri的區別

uri 是統一資源識別符號(universal resource identifier),url 是統一資源定位符(universal resource locator)。用一句話概括它們的區別:uri 是用字串來標識某一網際網路資源,而 url 則是表示資源的位址(我們說某個**的**就是 url),因此 uri 屬於父類,而 url 屬於 uri 的子類。

2.什麼是爬蟲

爬蟲事實上就是乙個程式,用於沿著網際網路結點爬行,不斷訪問不同的**,以便獲取它所需要的資源

3.設計爬蟲時應該特別注意什麼問題

不要重複爬取同乙個 url 的內容。假設你沒做這方面的預防,如果乙個 url 的內容中包含該 url 本身,那麼就會陷入無限遞迴

4.如何禁止正規爬蟲訪問你的敏感內容

在**的根目錄下建立並編輯 robots.txt 檔案,用於表明您不希望搜尋引擎抓取工具訪問您**上的哪些內容。此檔案使用的是 robots 排除標準,該標準是一項協議,所有正規搜尋引擎的蜘蛛均會遵循該協議爬取。既然是協議,那就是需要大家自覺尊重,所以該協議一般對非法爬蟲無效。

5.訪問的**不存在,會產生哪類異常

6.為了解決 ascii 編碼的不足,什麼編碼應運而生事實上計算機只認識 0 和 1,然而我們卻可以通過計算機來顯示文字,這就是靠編碼實現的。編碼其實就是約定的乙個協議,比如 ascii 編碼約定了大寫字母 a 對應十進位制數 65,那麼在讀取乙個字串的時候,看到 65,計算機就知道這是大寫字母 a 的意思。

由於計算機是美國人發明的,所以這個 ascii 編碼設計時只採用 1 個位元組儲存(事實上只用了 7 位,1 個位元組有 8 位),包含了大小寫英文本母、數字和一些符號。但是計算機在全世界普及之後,ascii 編碼就成了乙個瓶頸,因為 1 個位元組是完全不足以容納各國語言的。

大家都知道英文只用 26 個字母就可以組成不同的單詞,而漢字光常用字就有好幾千個,至少需要 2 個位元組才足以存放,所以後來中國制訂了 gb2312 編碼,用於對漢字進行編碼。

然後日本為自己的文字制訂了 shift_jis 編碼,南韓為自己的文字制訂了 euc-kr 編碼,一時之間,各國都制訂了自己的標準。不難想象,不同的標準放在一起,就難免出現衝突。這也正是為什麼最初的計算機總是容易看到亂碼的現象。

為了解決這個問題,unicode 編碼應運而生。unicode 組織的想法最初也很簡單:建立乙個足夠大的編碼,將所有國家的編碼都加進來,進行統一標準。

沒錯,這樣問題就解決了。但新的問題也出現了:如果你寫的文字只包含英文和數字,那麼用 unicode 編碼就顯得特別浪費儲存空間(用 ascii 編碼只占用一半的儲存空間)。所以本著能省一點是一點的精神,unicode 還創造出了多種實現方式。

比如常用的 utf-8 編碼就是 unicode 的一種實現方式,它是可變長編碼。簡單地說,就是當你的文字是 ascii 編碼的字元時,它用 1 個位元組存放;而當你的文字是其它 unicode 字元的情況,它將按一定演算法轉換,每個字元使用 1~3 個位元組存放。這樣便實現了有效節省空間的目的。

ascii編碼:用來表示英文,它使用1個位元組表示,其中第一位規定為0,其他7位儲存資料,一共可以表示128個字元。

gbk/gb2312/gb18030:表示漢字。gbk/gb2312表示簡體中文,gb18030表示正體中文。

unicode編碼:包含世界上所有的字元,是乙個字符集。

utf-8:是unicode字元的實現方式之一,它使用1-4個字元表示乙個符號,根據不同的符號而變化位元組長度。

Python爬蟲知識點一

一。入門知識 1.1.http簡介 uri和url的區別 uri強調的是資源,而url強調的是資源的位置。1.2常用請求型別 options 返回伺服器針對特定資源所支援的http請求方法。head 向伺服器索要與get請求相一致的響應,只不過響應體將不會被返回。get 向特定資源發出請求 post...

HTTP必備知識點 一

超文字傳輸協議 英文 hypertext transfer protocol,縮寫 http 是一種用於分布 式 協作式和超 資訊系統的應用層協議。http是全球資訊網的資料通訊的基礎。1 http是乙個客戶端終端 使用者 和伺服器端 請求和應答的標準 tcp 通過使 用網頁瀏覽器 網路爬蟲或者其它...

Python小知識點

1.時間戳 從1970年到現在的秒數 time2 time.time print time2 date9 datetime.datetime.now print date9.timestamp 上面是兩種用到時間戳的 stamp 郵戳。timestamp 時間戳,時間線。2.執行緒休眠 爬蟲 獲取對...