【Python52--爬蟲1】
阿新 • • 發佈:2018-11-28
一、Python如何訪問網際網路
採用urllib包來訪問
二、理論
1、請問URL是“統一資源識別符號”還是“統一資源定位符”
URI是統一資源識別符號,URL是統一資源定位符。即:URI是用字串表示某一網際網路資源,URL是用字元迴圈表示資源的地址,因此URI是父類,URL是子類
2、urllib.request.urlopen()返回的是什麼型別的資料
import urllib.request url = "https://ilovefishc.com" response = urllib.request.urlopen(url).read() a = response.decode("utf-8") print(a)
3、當目標網站使用的是自簽名的證書時就會丟擲錯誤:urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>
#解決辦法:匯入import ssl 和 ssl._create_default_https_context = ssl._create_unverified_context import urllib.request import ssl ssl._create_default_https_context= ssl._create_unverified_context url = "https://ilovefishc.com" response = urllib.request.urlopen(url).read() a = response.decode("utf-8") print(a)
4、下載https://fishc.com.cn/首頁,並列印前300個位元組
import urllib.request import ssl import chardet ssl._create_default_https_context = ssl._create_unverified_context url= "https://fishc.com.cn/" response = urllib.request.urlopen(url).read() #chardet.detect(response) print(response.decode("charmap","ignore"))
只是擴充套件:如果不知道網站採用的是什麼編碼格式,如何解決
方法:
1)、安裝chardet模組:pip install
2)、匯入:>>import chardet
3)、輸入:>>chardet.detect(response)
>> {'confidence': 0.99, 'encoding': 'GB2312'}
4)、如果輸出的是:GB2312
5)、採用:>>
if chardet.detect(response)['encoding'] == 'GB2312':
response.decode('GBK')
In [1]: import urllib.request In [2]: import ssl In [3]: ssl._create_default_https_context = ssl._create_unverified_context In [4]: url = "https://fishc.com.cn/" In [5]: response = urllib.request.urlopen(url).read() In [6]: import chardet In [7]: chardet.detect(response) Out[7]: {'encoding': 'Windows-1254', 'confidence': 0.45397661418528873, 'language': 'Turkish'} ################################# #知道了編碼格式是:Windows-1254',則進行後續程式碼編寫 import urllib.request import ssl import chardet ssl._create_default_https_context = ssl._create_unverified_context url = "https://fishc.com.cn/" response = urllib.request.urlopen(url).read() #chardet.detect(response) print(response.decode("charmap","ignore"))
5、寫一個程式,依次訪問檔案中指定的站點,並將每個站點返回的內容依次存放到不同的檔案中