随笔 - 137  文章 - 2  评论 - 2715  阅读 - 540万 

urllib2 是Python自带的标准模块, 用来发送HTTP Request的。  类似于 .NET中的,  HttpWebRequest类

 

urllib2 的优点

Python urllib2 发出的HTTP Request, 能自动被Fiddler截获, 方便了调试。

Python 可以自动处理Cookie

 

urllib2 的缺点

Python urllib2 发出的http Request, 中的header 会被修改成“首字母大写”,

比如你的代码里写的header 是: content-TYPE=application/x-www-form-urlencoded ,  会被修改为 Content-Type=application/x-www-form-urlencoded

 

实例一,  Get方法, 并且自定义header

 

复制代码
# -* - coding: UTF-8 -* -  
import urllib2

request = urllib2.Request("http://www.baidu.com/")
request.add_header('content-TYPE', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
print response.getcode()
print response.geturl()
print response.read()
复制代码

 

实例二, post方法

 

复制代码
# -* - coding: UTF-8 -* -  
import urllib2
import urllib

request = urllib2.Request("http://passport.cnblogs.com/login.aspx")
request.add_header('content-TYPE', 'application/x-www-form-urlencoded')
data={"tbUserName":"test_username", "tbPassword":"test_password"}

response = urllib2.urlopen(request, urllib.urlencode(data))
print response.getcode()
print response.geturl()
print response.read()
复制代码

 

实例三: Cookie 的处理

 

复制代码
# -* - coding: UTF-8 -* -  
import urllib2
import urllib
import cookielib

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

request = urllib2.Request("https://dynamic.12306.cn/otsweb/")
request.add_header('content-TYPE', 'application/x-www-form-urlencoded')
data={"tbUserName":"test_username", "tbPassword":"test_password"}

response = opener.open(request, urllib.urlencode(data))

# send again, you will see cookie sent to web server
response = opener.open(request, urllib.urlencode(data))

print response.getcode()
print response.geturl()
print response.read()
复制代码

 

实例四:如何处理跳转

创建Opener时, ul2.HTTPRedirectHandler是默认被加上的handler之一 

 

 

 

posted on   小坦克  阅读(19671)  评论(7编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示