Python中urllib模組的使用

2021-07-25 13:59:41 字數 4373 閱讀 7366

建立乙個表示遠端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...