Python核心模塊——urllib模塊


現在Python基本入門了,現在開始要進軍如何寫爬蟲了!

先把最基本的urllib模塊弄懂吧。

urllib模塊中的方法

1.urllib.urlopen(url[,data[,proxies]])

打開一個url的方法,返回一個文件對象,然后可以進行類似文件對象的操作。本例試着打開google

>>> import urllib
>>> f = urllib.urlopen('http://www.google.com.hk/')
>>> firstLine = f.readline()   #讀取html頁面的第一行
>>> firstLine
'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head><meta content="/images/google_favicon_128.png" itemprop="image"><title>Google</title><script>(function(){\n'

 

urlopen返回對象提供方法:

-         read() , readline() ,readlines() , fileno() , close() :這些方法的使用方式與文件對象完全一樣

-         info():返回一個httplib.HTTPMessage對象,表示遠程服務器返回的頭信息

-         getcode():返回Http狀態碼。如果是http請求,200請求成功完成;404網址未找到

-         geturl():返回請求的url

 

2.urllib.urlretrieve(url[,filename[,reporthook[,data]]])

urlretrieve方法將url定位到的html文件下載到你本地的硬盤中。如果不指定filename,則會存為臨時文件。

urlretrieve()返回一個二元組(filename,mine_hdrs)

臨時存放:

>>> filename = urllib.urlretrieve('http://www.google.com.hk/')
>>> type(filename)
<type 'tuple'>
>>> filename[0]
'/tmp/tmp8eVLjq'
>>> filename[1]
<httplib.HTTPMessage instance at 0xb6a363ec>

存為本地文件:

>>> filename = urllib.urlretrieve('http://www.google.com.hk/',filename='/home/dzhwen/python文件/Homework/urllib/google.html')
>>> type(filename)
<type 'tuple'>
>>> filename[0]
'/home/dzhwen/python\xe6\x96\x87\xe4\xbb\xb6/Homework/urllib/google.html'
>>> filename[1]
<httplib.HTTPMessage instance at 0xb6e2c38c>

 

3.urllib.urlcleanup()

清除由於urllib.urlretrieve()所產生的緩存

 

4.urllib.quote(url)和urllib.quote_plus(url)

將url數據獲取之后,並將其編碼,從而適用與URL字符串中,使其能被打印和被web服務器接受。

>>> urllib.quote('http://www.baidu.com')
'http%3A//www.baidu.com'
>>> urllib.quote_plus('http://www.baidu.com')
'http%3A%2F%2Fwww.baidu.com'

5.urllib.unquote(url)和urllib.unquote_plus(url)

與4的函數相反。

6.urllib.urlencode(query)

將URL中的鍵值對以連接符&划分

這里可以與urlopen結合以實現post方法和get方法:

GET方法:

>>> import urllib
>>> params=urllib.urlencode({'spam':1,'eggs':2,'bacon':0})
>>> params
'eggs=2&bacon=0&spam=1'
>>> f=urllib.urlopen("http://python.org/query?%s" % params)
>>> print f.read()

POST方法:

>>> import urllib
>>> parmas = urllib.urlencode({'spam':1,'eggs':2,'bacon':0})
>>> f=urllib.urlopen("http://python.org/query",parmas)
>>> f.read()

 

基本就這些,關於對象獲取的方法就不贅述了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM