Python網路爬蟲基礎

2021-08-07 11:10:50 字數 2903 閱讀 6139

爬蟲,即網路爬蟲,大家可以理解為在網路上爬行的一直蜘蛛,網際網路就比作一張

大網,而爬蟲便是在這張網上爬來爬去的蜘蛛咯,如果它遇到資源,那麼它就會抓取下來。

因此,使用者看到的網頁實質是由 html **構成的,爬蟲爬來的便是這

些內容,通過分析和過濾這些 html **,實現對、文字等資源的獲取。

url,即統一資源定位符,也就是我們說的**,統一資源定位符是對可以從網際網路

上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的位址。網際網路

上的每個檔案都有乙個唯一的url,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。

url的格式由三部分組成:

①第一部分是協議(或稱為服務方式)。

②第二部分是存有該資源的主機ip位址(有時也包括埠號)。

③第三部分是主機資源的具體位址,如目錄和檔名等。

爬蟲爬取資料時必須要有乙個目標的url才可以獲取資料,因此,它是爬蟲獲取資料的基本依

據,準確理解它的含義對爬蟲學習有很大幫助。

在python 3以後的版本中,urllib2這個模組已經不單獨存在(也就是說當

你import urllib2時,系統提示你沒這個模組),urllib2被合併到了urllib中,

叫做urllib.request 和 urllib.error 。

urllib整個模組分為urllib.request, urllib.parse, urllib.error。

例: 其中urllib2.urlopen()變成了urllib.request.urlopen()

urllib2.request()變成了urllib.request.request()

在python中,urllib和urllib2不可相互替代的。

整體來說,urllib2是urllib的增強,但是urllib中有urllib2中所沒有的函式。

urllib2可以用urllib2.openurl中設定request引數,來修改header頭。如果你訪

問乙個**,想更改user agent(可以偽裝你的瀏覽器),你就要用urllib2.

urllib支援設定編碼的函式,urllib.urlencode,在模擬登陸的時候,經常要post

編碼之後的引數,所以要想不使用第三方庫完成模擬登入,你就需要使用urllib。

urllib一般和urllib2一起搭配使用。

urllib.request.urlopen(url, data=none, [timeout, ]*, cafile=none,

capath=none, cadefault=false, context=none)

第三個引數timeout

例如timeout=10就是指定請求等待時間

import urllib.request as ur

response = ur.urlopen(「

print(response)

有些**不會同意程式直接用上面的方式進行訪問,如果識別有問題,那麼站點根本

不會響應,所以為了完全模擬瀏覽器的工作,我們需要設定一些headers 的屬性。

import urllib.request as ur

enableproxy = true

proxhandler = ur.proxyhandler()

nullproxyhandler = ur.proxyhandler({})

if enableproxy:

oppener = ur.build_opener(proxhandler)

else:

oppener = ur.build_opener(nullproxyhandler)

ur.install_opener(oppener)

首先解釋下urlerror可能產生的原因:

①網路無連線,即本機無法上網

②連線不到特定的伺服器

③伺服器不存在

在**中,我們需要用try-except語句來包圍並捕獲相應的異常

httperror是urlerror的子類,在你利用urlopen方法發出乙個請求時,服

務器上都會對應乙個應答物件response,其中它包含乙個數字」狀態碼」。

舉個例子,假如response是乙個」重定向」,需定位到別的位址獲取文件,

ur將對此進行處理。

其他不能處理的,urlopen會產生乙個httperror,對應相應的狀態嗎,

http狀態碼表示http協議所返回的響應的狀態

400:非法請求     處理方式:丟棄

401:未授權 處理方式:丟棄

403:禁止 處理方式:丟棄

404:沒有找到 處理方式:丟棄

500:伺服器內部錯誤 伺服器遇到了乙個未曾預料的狀況,導致了它無

法完成對請求的處理。一般來說,這個問題都會在伺服器端的源**出現錯誤時出現。

501:伺服器無法識別 伺服器不支援當前請求所需要的某個功能。當服務

器無法識別請求的方法,並且無法支援其對任何資源的請求。

502:錯誤閘道器 作為閘道器或者**工作的伺服器嘗試執行請求時,從上

遊伺服器接收到無效的響應。

503:服務出錯 由於臨時的伺服器維護或者過載,伺服器當前無法處理

請求。這個狀況是臨時的,並且將在一段時間以後恢復。

為什麼要使用cookie呢?

cookie,指某些**為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的

資料(通常經過加密)

比如說有些**需要登入後才能訪問某個頁面,在登入之前,你想抓取某個頁面內容

是不允許的。那麼我們可以利用urllib2庫儲存我們登入的cookie,然後再抓取其他

頁面就達到目的了。

Python網路爬蟲基礎 一

2.urllib和urllib2模組使用 3.requests模組使用 4.python三種網頁內容抓取方法 當瀏覽器向web伺服器發出請求時,它向伺服器傳遞了乙個資料塊,也就是請求信 息,http請求資訊由3部分組成 請求方法 uri 協議 版本 請求頭 request header 請求正文 右...

網路爬蟲基礎

0.可以新建乙個用於練習的html檔案,在瀏覽器中開啟。1.利用requests.get url 獲取網頁頁面的html檔案 import requests newsurl res requests.get newsurl 返回response物件 res.encoding utf 8 2.利用be...

Python網路爬蟲

找到url,也就是相當於入口,找到你要爬取的鏈結,獲取整個頁面資料 使用正規表示式,匹配到你想要爬取的內容,這裡使用的主要是正規表示式和一些常用的開源庫 最後一步就是寫入文字以及儲存問題了,如文字檔案 資料庫 coding utf 8 是用來指定檔案編碼為utf 8 from urllib impo...