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','')
#添加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的更多相关文章

  1. Python 开发轻量级爬虫08

    Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...

  2. Python 开发轻量级爬虫07

    Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...

  3. Python 开发轻量级爬虫06

    Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有 ...

  4. Python 开发轻量级爬虫04

    Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容 ...

  5. Python 开发轻量级爬虫03

    Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监 ...

  6. Python 开发轻量级爬虫02

    Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url, ...

  7. Python 开发轻量级爬虫01

    Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...

  8. Python开发轻量级爬虫

    这两天自学了python写爬虫,总结一下: 开发目的:抓取百度百科python词条页面的1000个网页 设计思路: 1,了解简单的爬虫架构: 2,动态的执行流程: 3,各部分的实现: URL管理器:p ...

  9. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

随机推荐

  1. 让所有的浏览器都能识别HTML5标签样式的小插件

    如今HTML5愈来愈引发大家的关注了,但目前支持HTML5的浏览器还不是主流,特别是国内用户近50%以上仍旧使用IE6,由于支持HTML5的IE9不支持Xp系统安装,这样未来很长一段时间,HTML5的 ...

  2. pagerank

    http://jung.sourceforge.net/ https://github.com/louridas/pagerank/blob/aeb9b17ada1f925bb525961574f6d ...

  3. centos虚拟机网络桥接配置

    1.虚拟机设置->网络适配器->选择桥接模式->重启虚拟机 2.使用命令进行配置IP地址 (引用别人的配置命令) 修改/etc/sysconfig/network-scripts 目 ...

  4. php 5.4中php-fpm 的重启、终止操作命令

    php 5.4中php-fpm 的重启.终止操作命令: 查看php运行目录命令:which php/usr/bin/php 查看php-fpm进程数:ps aux | grep -c php-fpm ...

  5. 解决:Windows 开机弹出AotuIt ERROR 错误

    AutoIt是个脚本语言,常被用于自动化安装.网络上有些系统镜像里含有AutoIt脚本,用于系统的自动配置.出现这种问题往往有两种可能的原因: 1)做系统的时候没搞好.这种情况就需要换一个镜像文件. ...

  6. 【BZOJ-3643】Phi的反函数 数论 + 搜索

    3643: Phi的反函数 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 141  Solved: 96[Submit][Status][Discuss ...

  7. Two-Pointer 之 Run Length Coding (RLC)

    游程编码(Run Length Coding, RLC)是串处理中常见的预处理方法.其写法是典型的双指针(Two-Pointer).下面总结其写法1.输入为一串整数可以不把整数存在数组里

  8. PL/SQL 将旧表的一些字段赋值给新的表中的字段的做法

    INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表

  9. C#+ AE 注意问题汇总(不断更新)

    1.AE的COM对象释放问题尤其是IFeatureCursor 建议用 ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pObj); 或者 int iRefs ...

  10. [译]ASP.NET 5 Configuration

    原文:https://docs.asp.net/en/latest/fundamentals/configuration.html ASP.NET 5支持多种配置选项. 应用的配置文件可以是JSON, ...