天天看點

python子產品: urllib子產品詳解 !!!/usr/bin/python2.5

前言

相信大家在做一個Python項目的時候,肯定會用到子產品,就想JAVA會用到JAR包一樣,這樣會讓我們的開發更高效和更簡潔,本節為大家介紹一個URLlib子產品

在python中urllib子產品提供上層接口,可以使用它下載下傳讀取資料,這裡舉個例子,把sina首頁的html抓取下來顯示出來.有2種方法可以實作.

1.urlopen(url, data=None, proxies=None)
    urlopen(url [, data]) -> open file-like object           

建立一個表示遠端url的類檔案對象,然後像本地檔案一樣操作這個類檔案對象來擷取遠端資料。參數url表示遠端資料的路徑,一般是網址;參數data表示以post方式送出到url的資料;參數proxies用于設定代理.urlopen傳回一個類檔案對象.

#!/usr/bin/python2.5
import urllib

url = "http://www.sina.com"
data = urllib.urlopen(url).read()
print data```

           

[email protected]:~# python gethtml.py

<meta http-equiv="Content-type" content="text/html; charset=gb2312" />
<title>тK˗ҳ</title>

<meta name="keywords" content="тK,тKθ,SINA,sina,sina.com.cn,тK˗ҳ,ą»§,؊Ѷ" />           

....

`

2 urlretrieve(url, filename=None, reporthook=None, data=None)

urlretrieve方法直接将遠端資料下載下傳到本地。參數filename指定了儲存到本地的路徑(如果未指定該參數,urllib會生成一個臨時檔案來儲存資料);參數reporthook是一個回調函數,當連接配接上伺服器.以及相應的資料塊傳輸完畢的時候會觸發該回調.

#!/usr/bin/python2.5
import urllib

url = "http://www.sina.com"
path = "/root/sina.txt"
data = urllib.urlretrieve(url,path)```
           

[email protected]:~# python getsina.py

[email protected]:~# cat sina.txt

<meta http-equiv="Content-type" content="text/html; charset=gb2312" />
<title>тK˗ҳ</title>

<meta name="keywords" content="тK,тKθ,SINA,sina,sina.com.cn,тK˗ҳ,ą»§,؊Ѷ" />           
不僅如此,這裡寫個爬蟲小程式,可以把百度貼吧http://tieba.baidu.com/p/2236567282網頁上的jpg圖檔依次下載下傳下來.
           

[email protected]:~# cat getJpg.py

!/usr/bin/python2.5

import re

import urllib

def getHtml(url):

html = urllib.urlopen(url).read()
return html
           

def getJpg(html):

reg = r'src="(http://.*?\.jpg)"'
imgre = re.compile(reg)
imgList = re.findall(imgre,html)
x = 0
for imgurl in imgList:
    urllib.urlretrieve(imgurl,'%s.jpg' % x)
    x += 1       
           

html = getHtml("http://tieba.baidu.com/p/2236567282")

getJpg(html)

`

[email protected]:~# python 11.py 
[email protected]:~# ls -l
total 1680
-rw-r--r-- 1 root root  38695 2013-04-11 23:32 0.jpg
-rw-r--r-- 1 root root  48829 2013-04-11 23:32 10.jpg
-rw-r--r-- 1 root root  51835 2013-04-11 23:32 11.jpg
-rw-r--r-- 1 root root  41688 2013-04-11 23:32 12.jpg
-rw-r--r-- 1 root root   1077 2013-04-11 23:32 13.jpg
-rw-r--r-- 1 root root  33989 2013-04-11 23:32 14.jpg
-rw-r--r-- 1 root root  41890 2013-04-11 23:32 15.jpg
-rw-r--r-- 1 root root  35728 2013-04-11 23:32 16.jpg
-rw-r--r-- 1 root root  44405 2013-04-11 23:32 17.jpg
-rw-r--r-- 1 root root  29847 2013-04-11 23:32 18.jpg
-rw-r--r-- 1 root root  44607 2013-04-11 23:32 19.jpg
-rw-r--r-- 1 root root  23939 2013-04-11 23:32 1.jpg
-rw-r--r-- 1 root root  45592 2013-04-11 23:32 20.jpg
-rw-r--r-- 1 root root  60910 2013-04-11 23:32 2.jpg
-rw-r--r-- 1 root root  39014 2013-04-11 23:32 3.jpg
-rw-r--r-- 1 root root  19057 2013-04-11 23:32 4.jpg
-rw-r--r-- 1 root root  64584 2013-04-11 23:32 5.jpg
-rw-r--r-- 1 root root  29297 2013-04-11 23:32 6.jpg
-rw-r--r-- 1 root root  39145 2013-04-11 23:32 7.jpg
-rw-r--r-- 1 root root   1059 2013-04-11 23:32 8.jpg