urllib 和 urllib2 都是接受 URL 请求的相关模块,但提供不同的功能。最显着的区别如下:
(1)urllib仅可以接受URL,不能创建,设置headers的request类实例;
(2)但是urllib提供了GET查询字符串生成的urlencode()方法,而urllib2没有(这也是urllib和urllib2经常一起使用的主要原因)
(3)编码工作使用urllib的urlencode()函数帮助我们将key:value对转换为'key=value'字符串,解码工作可以使用urllib的unquote()函数。
urllib.encode()的使用
urlencode()里面必须是字典类型
# _*_ coding:utf-8 _*_
import urllib
dic = {'derek':'编码'}
print urllib.urlencode(dic) #derek=%E7%BC%96%E7%A0%81
m = urllib.urlencode(dic)
print urllib.unquote(m) #derek=编码
一般HTTP请求提交的数据需要编码成URL编码格式,然后作为url的一部分,或者作为参数传递给Request对象。
GET请求一般用于我们从服务器获取数据。比如我们用百度搜索知乎:https://www.baidu.com/s?wd=Zhihu
找到GEThttps://www.baidu.com/s?wd=%E7%9F%A5%E4%B9%8E,后面跟着一长串,经过urldecode,发现是知乎。
用urllib.urlencode()进行转码,然后组合url。
# _*_ coding:utf-8 _*_
import urllib,urllib2
url = 'http://www.baidu.com/s'
headers = {'UserAgent':'Mozilla'}
keyword = raw_input('请输入关键字:')
wd = urllib.urlencode({'wd':keyword})
fullurl = url + '?' + wd
print fullurl
request = urllib2.Request(fullurl,headers=headers)
response = urllib2.urlopen(request)
print response.read()
然后输入关键字,爬取下对应的内容。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python中将键值对添加到字典中09/03
- ♥ 无法使用 python i18n01/08
- ♥ python创建模块时的注意事项12/22
- ♥ python如何处理12306的验证码01/12
- ♥ python3的pip在哪里10/29
- ♥ python如何追加到文件中09/23
内容反馈