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)