Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2788564
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Python/Ruby

2013-02-28 22:19:45

urllib:比较简单,功能相对也比较弱,可以从指定的URL下载文件,或是对一些字符串进行编码解码以使他们成为特定的 URL串。

urllib2:它有各种各样的Handler啊,Processor啊可以处理更复杂的问 题,比如网络认证,使用代理服务器,使用cookie等等。

HTTP是基于请求和应答机制的--客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。


urllib 和urllib2(python3已经合并成一个了)都是接受URL请求的相关模块,但是提供了不同的功能。(老外写的
1、urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL:这意味着你不可以伪装你的User Agent字符串等。
2、urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。Data同样可以通过在Get请求的URL本身上面编码来传送。urllib.urlencode(data) 

点击(此处)折叠或打开

  1. #coding:utf-8
  2. #!/usr/bin/python
  3. # Filename: web.py

  4. import urllib,urllib2
  5. #网页地址
  6. url=""
  7. #打开链接,返回一个可读的文件对象,可用文件的方法来读
  8. wp=urllib.urlopen(url)
  9. #获取页面内容
  10. content=wp.read()
  11. print "字符串长度:",len(content)
  12. #找开一个文本文件
  13. fp=open("163.txt","w")
  14. #写入数据
  15. fp.write(content)
  16. fp.close();

  17. #两种方法
  18. #fqq=urllib2.urlopen(url, data, timeout)
  19. #urllib2.urlopen(qqurl,data)
  20. qqurl=""
  21. req=urllib2.Request(qqurl)#request方法可以,可以在这里添加要提交的数据
  22. fqq=urllib2.urlopen(req)
  23. the_page=fqq.read()
  24. print "网页的字符串长度:",len(the_page)
  25. fp=open("qq.txt","w")
  26. fp.close


  27. 字符串长度: 134602
  28. 网页的字符串长度: 170233
我们可以看到登陆人人的过程中浏览器向人人的服务器发送POST请求数据,有四项,其中两项是你的账号和密码。
下面我们就利用代码模拟发出同样的请求就可以啦。
post_data = {
    'email':'xxxxx',
    'password':'xxxxx',
    'origURL':'',
    'domain':'renren.com'
}
req = urllib2.Request('', urllib.urlencode(post_data))
html_src = openner.open(req).read()
parser = BeautifulSoup(html_src)





阅读(4435) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~