urllib 和 urllib2 都是接受URL请求的相关模块,但是提供了不同的功能。两个最显著的不同如下:
  • urllib 仅可以接受URL,不能创建 设置了headers 的Request 类实例;

  • 但是 urllib 提供 urlencode 方法用来GET查询字符串的产生,而 urllib2 则没有。(这是 urllib 和 urllib2 经常一起使用的主要原因)

  • 编码工作使用urllib的urlencode()函数,帮我们将key:value这样的键值对转换成"key=value"这样的字符串,解码工作可以使用urllib的unquote()函数。(注意,不是urllib2.urlencode() )

Get方式

# urllib2_get.py

import urllib      #负责url编码处理
import urllib2 url = "http://www.baidu.com/s"
word = {"wd":"传智播客"}
word = urllib.urlencode(word) #转换成url编码格式(字符串)
newurl = url + "?" + word # url首个分隔符就是 ? headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} request = urllib2.Request(newurl, headers=headers) response = urllib2.urlopen(request) print response.read()

  

POST方式

import urllib
import urllib2 # POST请求的目标URL
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null" headers={"User-Agent": "Mozilla...."} formdata = {
"type":"AUTO",
"i":"i love python",
"doctype":"json",
"xmlVersion":"1.8",
"keyfrom":"fanyi.web",
"ue":"UTF-8",
"action":"FY_BY_ENTER",
"typoResult":"true"
} data = urllib.urlencode(formdata) request = urllib2.Request(url, data = data, headers = headers)
response = urllib2.urlopen(request)
print response.read()

  

最新文章

  1. vue2.0实战
  2. 【Java并发编程实战】-----“J.U.C”:ReentrantLock之二lock方法分析
  3. caffe 基本知识简介
  4. (01背包变形) Cow Exhibition (poj 2184)
  5. Java JDBC下执行SQL的不同方式、参数化预编译防御
  6. Android GestureDetector方法详解
  7. vim 学习日志(1):剪切,复制,粘贴,删除,撤销
  8. linux远程执行命令
  9. 基于cygwin构建u-boot(一)环境搭建
  10. MFC中MessageBeep与sndPlaySound播放声音函数使用
  11. 【转】jqGrid学习之参数
  12. JAVA_SE基础——44.抽象类的练习
  13. mysql ssh 跳板机(堡垒机???)连接服务器
  14. 区块链教程(二):比特币、区块链、以太坊、Hyperledger的关系
  15. Flutter Android 真机调试指南
  16. python基础一数据类型之集合
  17. luogu 1004 方格取数
  18. 发票查验---异步处理多条记录---demo代码
  19. struts2从浅至深(六)总结
  20. python装饰器(披着羊皮的狼)

热门文章

  1. Android API level 版本对应关系
  2. Android Http POST文件上传之-----RFC1867协议
  3. windows 手动安装 PostgreSQL 9.0 zip解压缩版
  4. gcc static静态编译选项提示错误:/usr/lib/ld:cannot find -lc
  5. 纯C实现面向对象之接口编程
  6. 多个客户端连接socket
  7. extjs4权限管理,actioncolumn列显示隐藏或禁用
  8. [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞
  9. jQuery编程小结
  10. python exec和eval