urllib簡單示例和urllib代理ip

urllib包,專門處理http請求響應的內置包。
import urllib
urllib包下的_init_.py沒寫東西,import urllib寫法並不會引入其他文件。

import urllib.request
#from urllib import request
#from urllib.request import urlopen

response = urllib.request.urlopen('https://www.baidu.com')
#urlopen(url, data={參數1: 值1, 參數2:值2},timeout=網頁響應超時時間)
print(response)
#從響應讀信息
html_content = response.read()
print(html_content)  # 字節類型的網頁信息
print(html_content.decode(encoding='utf-8'))  # 字節解碼成字符串

運行結果如下:
在這裏插入圖片描述
網上教程urllib urllib2,這兩個包的區別,urllib3
py2時代內置處理http的包是urllib,增加改進發布urllib2包。這兩個包都是內置。
urllib3第三方開發者開發,語法比較自然,requests包基於urllib3包。
py3時代把py2時代的urllib、urllib2包合併成urllib。
總結: 現在我們用的http相關處理包,主要有內置的urllib,第三方requests這兩個包。

urllib 代理示例

爲了防止同一個ip頻繁訪問服務器被封鎖,需要不斷變化ip通過別人的電腦代理訪問服務器。

從哪找代理?

  1. ip代理平臺 http://www.xicidaili.com/nn/
    免費的不太穩定有些不可用。付費的穩定。
  2. 網友蒐集爬取的ip代理池。
import urllib.request
import random
#proxies = [{'http': 'http://124.231.50.56:8118'}]
#proxy = random.choice(proxies)
#設置代理操作器
proxy = urllib.request.ProxyHandler({'http':'http://116.7.176.75:8118'})
#構建新的請求器,覆蓋默認opener
opener = urllib.request.build_opener(proxy, urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
reponse = urllib.request.urlopen('http://www.baidu.com/s?wd=ip')
html_content = reponse.read().decode('utf-8')
#返回結果中查找“主機ip”看是否變更爲代理ip
print(html_content)
  • 可能出現的錯誤:
  1. 長時間未響應。urllib.error.URLError:<urlopen error[WinError 10060]由於連接方在一段時間後沒有正確答覆或連接的主機沒有反應,連接嘗試失敗。>
  2. 對方服務器拒絕鏈接。 connectionResetError遠程主機關閉了一個現有的連接。
    解決 換一個或購買付費接口
  • 代理池:一個兩個ip不夠用,需要列表,手動添加代碼麻煩。
    解決方案:專門寫一個蒐集ip代理網站免費信息的爬蟲,把爬下來的代理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章