码迷,mamicode.com
首页 > 编程语言 > 详细

Python 开发轻量级爬虫05

时间:2016-09-05 09:09:59      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

Python 开发轻量级爬虫

(imooc总结05--网页下载器)

介绍网页下载器
    网页下载器是将互联网上url对应的网页下载到本地的工具。因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器是爬虫的核心组件。
    网页下载器类似于网页浏览器,会将url对应的互联网网页,以HTML的形式下载到本地存储一个本地文件或者本地字符串,然后才能进行后续的分析和处理。
Python有哪几种网页下载器呢?
    Urllib2 – python官方的基础模块,它支持直接的url下载,
              或者说向网页提交一些需要用户输入的数据,甚至支持需要登陆网页的cookie处理,需要代理访问的代理处理等这些增强功能。
    Request – python第三方的插件,它提供更为强大的功能。
    这里选用urllib2这个简单的模块来实现网页的下载。

网页下载器---urllib2
    第一种:最简洁的方法
        给定一个url,我们将其传送给urllib2.urlopen()方法,可以实现网页的下载。
        首先我们import urllib2模块,然后我们可以使用urllib2的urlopen()方法,给定一个url字符串实现网页的下载,
        返回的内容我们传送给response对象,然后我们可以使用response的getcode方法来获取一个状态码,根据这个状态
        码来判断我们的请求是否成功。同时,我们可以使用response的read()方法来读取下载好的内容。
    对应代码:
        import urllib2
        #直接请求
        response = urllib2.urlopen(http://www.baidu.com)
        #获取状态码,如果是200表示获取成功
        print response.getcode()
        #读取内容
        Cont = response.read()

    第二种:我们可以增强处理
        添加data---我们可以向服务器提交用户输入的数据。
        添加http header---我们可以向服务器提交http的头信息。
        现在我们有三个参数:url、data、header,我们将这三个参数传送给urllib2的Request类,生成一个request对象。
        然后我们仍然使用urllib2的urlopen方法,以request作为参数发送网页请求。

        首先import urllib2,然后我们用urllib2的Request以url作为参数生成一个request对象,然后我们使用request的
        add_data方法向服务器添加用户的数据。比如说我们提交a这个数据下值为1。也可以使用add_header来添加http头信息,
        这里我们将我们的爬虫伪装成一个mozilla浏览器,然后使用urllib2的urlopen方法,以request作为参数来提交网页下载请求。

    对应代码:
        import urllib2
        request = urllib2.Request(url)
        #添加数据
        request.add_data(a,1)
        #添加http头信息
        request.add_header(User-Agent,Mozilla/5.0)
        #发送请求获得结果
        response = urllib2.urlopen(request)
    
     第三种方法:添加特殊情景的处理器 举几个例子: 有些网页需要用户登录才能访问,我们需要添加cookie处理,这里使用HTTPCookieProcessor。 有些网页需要代理才能访问,我们使用ProxyHandler。 有些网页它的协议使用HTTPS加密访问的,我们使用HTTPSHandler。 还有些网页它的url存在相互自动的跳转关系,我们使用HTTPRedirectHandler来进行处理。 这些handler,我们将其传送给urllib2的build_opener方法,来创建一个opener对象。 然后我们给urllib2的install_opener这个opener对象,这样urllib2这个模块就具有了这些场景的处理能力, 然后我们仍然使用urllib2的urlopen方法以url作为参数或者request实现网页的下载。 我们增强cookie处理 首先import urllib2,cookielib这两个模块,然后创建一个CookieJar()来存储我们的cookie数据, 然后我们使用urllib2 的HTTPCookieProcessor,以刚创建的cookiejar作为参数生成一个handler。 将这个handler传送给urllib2的build_opener方法来生成一个opener对象,然后我们给urllib2的 install_opener来增强这个处理器,然后我们仍然使用urllib2的urlopen方法请求url或者request实现网页的下载。 对应代码:
        import urllib2,cookielib
        #创建cookie容器
        Cj=cookielib.CookieJar()
        #创建一个opener
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(Cj))
        #给urllib2安装opener
        urllib2.install_opener(opener)
        #使用带有cookie的urllib2访问网页
        response = urllib2.urlopen(http://www.baidu.com)
        print response.getcode()    

 


    

Python 开发轻量级爬虫05

标签:

原文地址:http://www.cnblogs.com/billyzh/p/5841008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!