天天看點

Python 3 爬蟲(一) 簡單的爬蟲URL相應内容Python 3爬蟲内容

URL相應内容

url 組成部分:

protocol :// hostname[:port] / path /

protocol:協定
hostname[:port] :主機名,端口名為可選參數
path:主機資源的具體位置
           

域名和伺服器名

e.g.  www.baidu.com
baidu.com:域名
www:伺服器名
           

Python 3爬蟲内容

urllib庫的使用

urllib—URL handing modules

官方文檔

https://docs.python.org/3/library/urllib.html#module-urllib

- urllib.request        用于打開讀取和讀取URLs的操作
 - urllib.error          包含由使用urllib.request産生的錯誤,可用try進行捕捉處理
 - urllib.parse          用于解析URLs
 - urllib.robotparser    用于解析robots.txt文本檔案
           

urllib.request 具體使用

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

此接口函數用于打開和處理URLs資訊,傳回的對象response如同一個文本對象。注意,我們可以調用read(),進行讀取。再通過print(),将讀到的資訊列印出來。

浏覽器就是作為用戶端從伺服器端擷取資訊,然後将資訊解析,再展示給我們的。

我們已經成功擷取了資訊,但是顯然他們都是二進制的亂碼,看起來很不友善。我們怎麼辦呢?

我們可以通過簡單的decode()指令将網頁的資訊進行解碼,并顯示出來,

拿百度舉例:

# -*- coding: UTF-8 -*-
from urllib import request

if __name__=="__main__":
    url = "http://www.baidu.com"
    response = request.urlopen(url)
    data=response.read()
    data=data.decode("UTF-8")
    print(data)
           

from urllib import request 和 import urllib差別

本質上和功能上沒有差別,差別展現在調用的時候

使用 from urllib import request 在後面調用的時候可以隻用response = request.urlopen(url) 而 使用 import urllib 在後面調用的時候要寫成 response = urllib.request.urlopen(url)