主要是 urlretrieve(), urlcleanup(), info(), getcode()
urlretrieve("网址地址","本地路径(带后缀名)")
urlcleanup() 删除缓存
file = urllib.request.urlopen("web.htm")
print (file.info()) #获得页面的信息
print (file.getcode()) # 获取当前页面的状态码
下面是常见的HTTP状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
简单的模版
get
from urllib.request import urlopen,urlcleanup,quote
import re
def pareseUrl(re_lamdba, url):
data = urlopen(url).read().decode('utf-8')
ret = re.compile(re_lamdba).finditer(data)
for i in ret:
yield {
'title':i.group('title'),
}
keyword = '喇叭花'
keyword = quote(keyword) #进行转码,url不认识中文
url = 'http://www.baidu.com/s?wd='+keyword
pat1 = "title:'(?P<title>.*?)',"
pat2 = '"title":"(?P<title>.*?)",'
data = urlopen(url).read().decode('utf-8')
ret1 = re.compile(pat1).findall(data)
ret2 = re.compile(pat2).findall(data)
print(ret1, ret2)
post
from urllib.request import urlopen,urlcleanup,quote,Request
from urllib.parse import urlencode
#urlencode 需要转码(表单的内容提交需要转码)里面是字典的形式,操作表单
'''
<body>
<form action="" method="post">
name:<input name="name" type="text" /><br>
passwd:<input name="pass" type="text" /><br>
<input name="" type="submit" value="submit" />
<br />you input name is:aqr<br>you input passwd is:qwerqwer
</body>
'''
posturl = 'https://www.iqianyue.com/mypost'
postdata = urlencode({
'name':'lalala',
'pass':'1122334455',
}).encode('utf-8') #设置编码
#进行post需要用到urllib.request下的Request(真实的post地址,post数据)
req = Request(posturl, postdata)
rst = urlopen(req).read().decode('utf-8') #获取请求之后的页面
print(rst)

本文介绍了Python的urllib库基础用法,包括使用urlretrieve()下载文件,urlcleanup()清理缓存,通过urlopen()获取页面信息及状态码。重点讲解了GET和POST两种HTTP请求方式。

被折叠的 条评论
为什么被折叠?



