首页 > 编程知识 正文

python爬虫实例,python爬虫urllib

时间:2023-05-04 19:38:36 阅读:50391 作者:780

今天考虑使用一个名为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,但基本思路与此相同

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。