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)
-
#coding:utf-8
-
#!/usr/bin/python
-
# Filename: web.py
-
-
import urllib,urllib2
-
#网页地址
-
url=""
-
#打开链接,返回一个可读的文件对象,可用文件的方法来读
-
wp=urllib.urlopen(url)
-
#获取页面内容
-
content=wp.read()
-
print "字符串长度:",len(content)
-
#找开一个文本文件
-
fp=open("163.txt","w")
-
#写入数据
-
fp.write(content)
-
fp.close();
-
-
#两种方法
-
#fqq=urllib2.urlopen(url, data, timeout)
-
#urllib2.urlopen(qqurl,data)
-
qqurl=""
-
req=urllib2.Request(qqurl)#request方法可以,可以在这里添加要提交的数据
-
fqq=urllib2.urlopen(req)
-
the_page=fqq.read()
-
print "网页的字符串长度:",len(the_page)
-
fp=open("qq.txt","w")
-
fp.close
-
-
-
字符串长度: 134602
-
网页的字符串长度: 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)
阅读(4475) | 评论(0) | 转发(1) |