今天考虑使用一个名为urllib2的库,我发现以前有很多不知道的事情。 现在写也要记录
1 .最基础的应用
import urllib2
url=r'http://www.baidu.com '
HML=urllib2.urlopen(URL ).read ) )。
打印html
客户端和服务器端通过request与response进行交流,客户端首先向服务端发送request,接收服务端返回的response
urllib2提供了request类,用户可以在发送请求之前生成request的对象,并使用urllib2.urlopen方法发送请求
import urllib2
url=r'http://www.baidu.com '
req=urllib2.Request(url )
HML=urllib2.urlopen(req ).read ) )。
打印html
在以上示例中,使用req=urllib2.request(URL )实例化resquest对象,然后使用urllib2. urlopen (req )打开此页面
在实例化Request对象时,我注意到必须对url进行排队,并且有几个默认参数
基本上还使用了很多data和header,为了浏览而需要登录的网站经常需要这两个参数
导入urllib
import urllib2
url='http://www.baidu.com/'
values={ ' name ' : ' Michael foord ',' location' : 'Northampton ',' language' : 'Python' }
data=urllib.urlencode(values )
req=urllib2.request(URL,data ) )。
response=urllib2.urlopen(req )
the_page=response.read (
print the_page
这个例子向百度发送一些数据。 此示例返回错误页面。 很普通。 因为我们访问百度时不需要开机自检的信息。 开机自检后出错
百度在找不到相应的页面时会报告错误。
当然这是POST数据,也可以用于GET方法。 请把上面的电线稍微改造一下
百度通过http://www.baidu.com/s吗? 用wd=XXX查。 这样,就需要urlencode {‘wd’:’XXX’}这本词典
#编码: utf-8
导入urllib
import urllib2
url='http://www.baidu.com/s '
values={'wd':'sfdyl'}
data=urllib.urlencode(values )
打印数据
url2=url '? 数据传输
response=urllib2.urlopen(URL2 ) )。
the_page=response.read (
print the_page
以下是一个以模拟方式登录internet并显示首页内容的示例,详细介绍如何使用cookie。 以下是文档中的示例,我们可以通过修改此示例来实现我们想要的功能
import cookielib,urllib2
cj=cookielib.CookieJar (
opener=urllib2. build _ opener (urllib2. http cookie processor (CJ ) ) ) ) ) ) ) ) )。
r=opener.open (' http://example.com/' )。
#编码: utf-8
import urllib2,urllib
import cookielib
URL=r ' http://www.renren.com/aja xlogin '
创建#CJ饼干的容器
cj=cookielib.CookieJar (
opener=urllib2. build _ opener (urllib2. http cookie processor (CJ ) ) ) ) ) ) ) ) )。
对开机自检的数据进行编码
data=urllib.urlencode((email ) :email,(password ) :pass ) ) ) )。
r=opener.open(URL,data ) )。
打印CJ
当热芝麻看到cj在的时候,表示你已经访问了登录页面。 现在不知道是否正常登录。 可以通过访问http://www.renren.com/home进行确认
上面的代码说明了两点。 我也看了很久
为什么语句r=opener.open(URL,data )使用名为opener的对象而不是utllib2,urlopen打开? 不仅是在例子中写的,我们这么写也是因为改造后可以使用urllib2.urlopen,其实opener是由urllib2.bulid_opener制作的。 但是,他build之后,自己没有安装和使用那个,也没有那个属性和方法。 如果希望urllib2也具有操作者的属性和方法,请首先使用urllib2.install_opener(opener )来“安装”此操作者。 安装完成后,可以使用urlib2进行操作
#编码: utf-8
import urllib2,urllib
import cookielib
URL=r ' http://www.renren.com/aja xlogin '
创建#CJ饼干的容器
cj=cookielib.CookieJar (
opener=urllib2. build _ opener (urllib2. http cookie processor (CJ ) ) ) ) ) ) ) ) )。
urllib2.install_opener(opener ) )。
对开机自检的数据进行编码
data=urllib.urlencode((email ) :email,(password ) :pass ) ) ) )。
#r=opener.open(URL,data )如果没有上述urllib2.install_opener方法,就必须这样写
r=urllib2.urlopen(URL,data ) )。
html=urllib2. urlopen (' http://www.renren.com/home ' ).read ) ) )。
打印html
同样,urllib2也有与代理相关的handle,但基本思路与此相同