现在Python基本入门了,现在开始要进军如何写爬虫了! 先把最基本的urllib模块弄懂吧。 urllib模块中的方法1.urllib.urlopen(url[,data[,proxies]])打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作。本例试着打开google >>> import urllib >>> f = urllib.urlopen('http://www./') >>> firstLine = f.readline() #读取html页面的第一行 >>> firstLine '<!doctype html><html itemscope="" itemtype="http:///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./') >>> type(filename) <type 'tuple'> >>> filename[0] '/tmp/tmp8eVLjq' >>> filename[1] <httplib.HTTPMessage instance at 0xb6a363ec> 存为本地文件: >>> filename = urllib.urlretrieve('http://www./',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:///query?%s" % params) >>> print f.read() POST方法: >>> import urllib >>> parmas = urllib.urlencode({'spam':1,'eggs':2,'bacon':0}) >>> f=urllib.urlopen("http:///query",parmas) >>> f.read()
基本就这些,关于对象获取的方法就不赘述了。
|
|