爬蟲,即網路爬蟲,大家可以理解為在網路上爬行的一直蜘蛛,網際網路就比作一張
大網,而爬蟲便是在這張網上爬來爬去的蜘蛛咯,如果它遇到資源,那麼它就會抓取下來。
因此,使用者看到的網頁實質是由 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...