urllib2库的基本使用
urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用)
urllib2 在 python3.x 中被改为urllib.request
随机添加/修改User-Agent
ua_list = [
"Mozilla/5.0 (Windows NT 6.1; ) Apple.... ",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ",
"Mozilla/5.0 (Macintosh; Intel Mac OS... "
]
user_agent = random.choice(ua_list)
request.add_header("User-Agent", user_agent)
注意:获取user_agent 时,第一个字母大写,后面的全部小写
request.get_header("User-agent")
urllib 和 urllib2 的区别
-
urllib 仅可以接受URL,不能创建 设置了headers 的Request 类实例;
-
urllib 提供 urlencode 方法用来GET查询字符串的产生,而 urllib2 则没有。(这是 urllib 和 urllib2 经常一起使用的主要原因)
-
编码工作使用urllib的urlencode()函数,帮我们将key:value这样的键值对转换成"key=value"这样的字符串,解码工作可以使用urllib的unquote()函数。(注意,不是urllib2.urlencode() )
示例代码
# -*- coding:utf-8 -*-
import urllib
word = {'wd': '要查询的字符串'}
# 使用urllib.urlencode()编码
result = urllib.urlencode(word)
print(result)
输出结果
E:\hc\python_project\untitled\py\Scripts\python.exe E:/hc/python_project/untitled/demo_urllib2/demo4.py
wd=%E8%A6%81%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2
Process finished with exit code 0
一般HTTP请求提交数据,需要编码成 URL编码格式,然后做为url的一部分,或者作为参数传到Request对象中。