建立乙個表示遠端url的類檔案物件,然後像本地檔案一樣操作這個類檔案物件來獲取遠端資料。引數url表示遠端資料的路徑,一般是**;引數data表示以post方式提交到url的資料(玩過web的人應該知道提交資料的兩種方式:post與get。
如果你不清楚,也不必太在意,一般情況下很少用到這個引數);引數proxies用於設定**。urlopen返回 乙個類檔案物件,他提供了如下方法:
geturl():返回請求的url;
# -*- coding: utf-8 -*-
# @author: haonanwu
# @date: 2016-12-23 10:54:10
# @last modified by: haonanwu
# @last modified time: 2016-12-23 11:18:15
import urllib
defprint_list
(lists):
for i in lists:
print i
defdemo1
(s):
lines = s.readlines()
print_list(lines)
defdemo2
(s):
print s.getcode()
defdemo3
(s):
msg = s.info()
# print_list(dir(msg)) # 用dir得到物件的所有方法
# print_list(msg.headers)
# print msg.getheader('content-type')
# print_list(msg.items())
if __name__ == '__main__':
url1 = ''
url2 = ''
s = urllib.urlopen(url1)
# demo1(s)
# demo2(s)
# demo3(s)
# 使用**http proxying :
# proxies =
# s = urllib.urlopen(url1, proxies=proxies)
# 使用環境變數裡的**
# s = urllib.urlopen(url1, proxies=none)
# s = urllib.urlopen(url1)
# 不使用**
# s = urllib.urlopen(url1, proxies={})
引數data指post到伺服器的資料。
該方法返回乙個包含兩個元素的元組(filename, headers),filename表示儲存到本地的路徑,header表示伺服器的響應頭。
下面通過例子來演示一下這個方法的使用。
# -*- coding: utf-8 -*-
# @author: haonanwu
# @date: 2016-12-23 10:54:10
# @last modified by: haonanwu
# @last modified time: 2016-12-23 11:18:15
import urllib
defprint_list
(lists):
for i in lists:
print i
defprogress
(blk, blk_size, total_size):
# 當伺服器沒有返回content-length首部時,urlretrieve不知道資料有多大,為total_size傳入-1。
if total_size > 0:
print
'read %d/%d - %.02f%%' % (blk*blk_size, total_size, (float)(blk_size * blk) * 100 / total_size)
else:
print
'read %d blocks (%dbytes)' % (blk,blk*blk_size)
defretrieve
(url):
fname, msg = urllib.urlretrieve(url, 'index.html', reporthook=progress)
# print fname
# print_list(msg.items())
if __name__ == '__main__':
url1 = ''
url2 = ''
s = urllib.urlopen(url1)
retrieve(url1)
清除由於urllib.urlretrieve()所產生的快取
將url資料獲取之後,並將其編碼,從而適用與url字串中,使其能被列印和被web伺服器接受。
'http%3a%2f%2fwww.baidu.com'與4的函式相反。
將url中的鍵值對以連線符&劃分
這裡可以與urlopen結合以實現post方法和get方法:
get方法:
import urllib
params = urllib.urlencode()
print params
f = urllib.urlopen("" % params)
print f.read()
post方法:
Python核心模組 urllib模組
現在python基本入門了,現在開始要進軍如何寫爬蟲了!先把最基本的urllib模組弄懂吧。開啟乙個url的方法,返回乙個檔案物件,然後可以進行類似檔案物件的操作。本例試著開啟google import urllib f urllib.urlopen firstline f.readline 讀取h...
Python模組之urllib模組
py2.x urllib庫 urllin2庫 py3.x urllib庫 變化 在pytho2.x中使用import urllib2 對應的,在python3.x中會使用import urllib.request,urllib.error。在pytho2.x中使用import urllib 對應的,...
python中urllib模組用法例項詳解
一 問題 近期公司專案的需求是根據客戶提供的api,我們定時去獲取資料,之前的方案是用php收集任務存入到redis佇列,然後在linux下做乙個常駐程序跑某乙個p程式設計客棧hp檔案,該php檔案就乙個無限迴圈,判斷redis佇列,有就執行,沒有就break.二 解決方法 最近剛好學了一下pyth...