一、任务描述

  本实验任务主要对urllib库进行一些基本操作,通过完成本实验任务,要求学生熟练掌握urllib库的使用,并对urllib库的基本操作进行整理并填写工作任务报告。

二、任务目标

1、掌握urllib库的导入和使用

三、任务环境

Ubuntu16.04、Python2.7

四、任务分析

  urllib 是一个收集多个模块以处理URL的软件包:

  urllib.request 用于打开和阅读网址

  urllib.error 包含由…提出的例外 urllib.request

  urllib.parse 用于解析URL

  urllib.robotparser用于解析robots.txt文件

五、任务实施

步骤1、环境准备

  右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令 打开终端。

  通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。

图1 切换目录

  【mkdir spiderBasic】在home目录下创建spiderBasic文件夹。

图2 创建文件夹

步骤2、网页爬取

  【cd spiderBasic】切换至spiderBasic目录下,【vim spider1.py】创建并编辑名为spider的Python文件。

图3 创建Python文件

  扒网页,其实就是根据URL来获取它的网页信息,虽然在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在于HTML中的。

  回车后进入编辑框内,按键盘【i】进入编辑状态,编译如下程序。

图4 编辑Python文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python spider1.py】执行spider1的Python文件。图片展示的是爬取的一部分。

图5 运行Python文件

  分析该代码。通过【cat spider1.py】查看编译的内容。

  【import】是导入urllib2的模块

  【urllib2.urlopen()】是调用urllib2库里面的urlopen方法,传入一个URL,网址以百度为例,协议是HTTP协议。

  urlopen一般接受三个参数:

  第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。

  第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT

  第一个参数URL是必须要传送的,在这个实验里传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。

  response对象有一个read方法,可以返回获取到的网页内容。

图6 urlopen函数

  urlopen参数可以传入一个Request请求,其实就是一个Request类的实例,构造时需要传入URL,Data等内容。

  再次通过【vim spider1.py】打开编辑文件,文件内容修改如下。

图7 Request请求

  保存并退出编辑状态后,运行后发现结果是完全一样的,只不过中间多了一个request对象,因为在构建请求时还需要加入好多内容,通过构建一个request,服务器响应请求得到应答。

步骤3、数据传送

  上面的程序演示了最基本的网页抓取,不过,现在大多数网站都是动态网页,需要动态地传递参数给它,它做出对应的响应。所以,在访问时,需要传递数据给它。最常见的情况就是登录注册的时候。把数据用户名和密码传送到一个URL,然后得到服务器处理之后的响应

  POST方式:

  【vim spider2.py】创建并编辑spider2.py的Python文件。

图8 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

  引入了urllib库。定义一个字典,名字为values,参数设置了username和password(账号密码可以写自己真实的CSDN的账号密码,该实验密码为了隐私以x代替),下面利用urllib的urlencode方法将字典编码,命名为data,构建request时传入两个参数,url和data,运行程序,返回的便是POST后呈现的页面内容。

图9 编辑Python文件

  GET方式:

  【vim spider3.py】创建并编辑spider3.py的Python文件。

图10 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

  GET方式可以直接把参数写到网址上面,直接构建一个带参数的URL出来即可。

图11 编辑Python文件

步骤4、Headers

  有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,需要设置一些Headers 的属性。

  首先,打开浏览器,右键选择【Inspect Element(Q)】,打开网络监听,示意如下,比如百度,刷新页面之后,会出现如下信息,

  拆分这些请求,只看第一个请求,可以看到,有个Request URL,还有headers,下面便是response,图片显示得不全,可以在本机亲身实验一下。那么这个头中包含了许多信息,有文件编码啦,压缩方式啦,请求的agent啦等等。

图12 User-Agent

  其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent,该实验只是说明了怎样设置的headers,看一下设置格式就好

  【vim spider2.py】再次编辑spider2.py文件。修改如下信息。

  这样,设置了一个headers,在构建request时传入,在请求时,就加入了headers传送,服务器若识别了是浏览器发来的请求,就会得到响应。

图13 headers

步骤5、Timeout设置

  第三个参数就是timeout的设置,可以设置等待多久超时,为了解决一些网站实在响应过慢而造成的影响。

  如果第二个参数data为空那么要特别指定是timeout是多少,写明形参,如果data已经传入,则不必声明。

  【vim spider】再次编辑spider2.py文件。修改如下信息。

图14 timeout

Urllib库的使用的更多相关文章

  1. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  2. urllib库初体验以及中文编码问题的探讨

    提出问题:如何简单抓取一个网页的源码 解决方法:利用urllib库,抓取一个网页的源代码 ------------------------------------------------------- ...

  3. Python爬虫入门 Urllib库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...

  4. Python爬虫入门:Urllib库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS.CS ...

  5. Python2/3中的urllib库

    urllib库对照速查表 Python2.X Python3.X urllib urllib.request, urllib.error, urllib.parse urllib2 urllib.re ...

  6. 芝麻HTTP:Python爬虫入门之Urllib库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...

  7. python爬虫 - Urllib库及cookie的使用

    http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...

  8. 对于python爬虫urllib库的一些理解(抽空更新)

    urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urllib库中,所有和网 ...

  9. (爬虫)urllib库

    一.爬虫简介 什么是爬虫?通俗来讲爬虫就是爬取网页数据的程序. 要了解爬虫,还需要了解HTTP协议和HTTPS协议:HTTP协议是超文本传输协议,是一种发布和接收HTML页面的传输协议:HTTPS协议 ...

随机推荐

  1. 《java入门第一季》之面向对象(重头戏多态)

    接下来介绍java第三大特性--多态性 /* 多态:同一个对象(事物),在不同时刻体现出来的不同状态. 举例: 猫是猫,猫是动物. 水(液体,固体,气态). 多态的前提: A:要有继承关系. B:要有 ...

  2. 从头到尾解析Hash表算法

    via:点击打开链接 十一.从头到尾解析Hash 表算法 作者:July.wuliming.pkuoliver   出处:http://blog.csdn.net/v_JULY_v.   说明:本文分 ...

  3. 【一天一道LeetCode】#4 Median of Two Sorted Arrays

    一天一道LeetCode (一)题目 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find th ...

  4. ERP-非财务人员的财务培训教(四)------公司/部门的成本与费用控制

    一.损益表.资产负责表 二.成本分类 ----成本习性 三.成本核算模式 四.成本控制原则 第四部分 公司/部门的成本与费用控制   一.损益表.资产负责表   项目 Items 产品销售收入 Sal ...

  5. 关机充电如何实现短按pwrkey灭屏

    目前关机充电PWRKEY实现长按开机和短按亮屏功能,灭屏是根据BL_SWITCH_TIMEOUTS时间,自动灭屏的:如果需要实现PWRKEY主动灭屏,请按照如下方法修改:     alps/media ...

  6. PS 滤镜算法原理——浮雕效果

    clc; clear all; Image=imread('4.jpg');Image=double(Image);p=3;  %% 控制浮雕的强度 %% 控制浮雕的方向 H=[0 0 p      ...

  7. 【38】java的集合框架(容器框架)

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些 Collection允许相同的元 ...

  8. Python中导入第三方声源库Acoular的逻辑解释以及Acoular的下载

    [声明]欢迎转载,但请保留文章原始出处→_→ 秦学苦练:http://www.cnblogs.com/Qinstudy/ 文章来源:http://www.cnblogs.com/Qinstudy/p/ ...

  9. 【深入理解Java内存模型】

    深入理解Java内存模型(一)--基础 深入理解Java内存模型(二)--重排序 深入理解Java内存模型(三)--顺序一致性 深入理解Java内存模型(四)--volatile 深入理解Java内存 ...

  10. 设计模式基础:类及类关系的UML表示

    设计模式基础:类及类关系的UML表示 2009-10-26 17:00 by 宗哥, 1891 阅读, 1 评论, 收藏, 编辑 UML中,类关系分为这几种,泛化(generalization), 实 ...