part1:全课程内容
学习目标:掌握定向网络数据爬取和网页解析的基本能力
记住一点:The Website is the API........
Part2:Python语言开发工具选择
python常用的IDE可分为:文本工具类和集成工具类这两大类,如以下12种IDE工具:
这里我们使用下面四种IDE工具:
IDLE是python自带的免费的文本工具:
Sublime Text是专业程序员经常使用的
Wing是python非常专业的一个IDE收费工具,适用于几千行甚至上万行大型应用。
以上都是通用的集成开发环境,下面两个是针对科学计算和数据分析的领域的python IDE。
什么是最好的IDE?
Part3:Python网络爬虫与信息提取简介,这里就不说了,网上有很多的文章可以看看。
Part4:第一周的内容导学
Part5:Requests的安装:
Requests的更多信息我们可以在http://www.python-requests.org中获得
安装方法:
以管理员的身份进入CMD,然后执行pip3 install requests的命令。
检验一下安装的效果:
打开python 的IDLE
接下来我们改变一下编码为utf-8码
Requests库主要有7个方法:
Part6:Reauests库的get()方法;
这里面我们通过给定get方法和url,来构造一个向服务器请求资源的一个Requests对象,这个对象是Requests库内部生成的,注意这里是大写的Requsts。
requests.get()返回的内容用变量r来表示,这个r是一个Response对象。Response对象包含从服务器返回的所有的相关资源。
requests.get的完整的使用方法包括有3个参数:url, params,和更多的相关参数
如果我们打开requests.get()方法源代码,我们可以看到get方法实际上只用了requests方法来封装,也就是说requests路一共提供了7种常用方法除了第一个requests方法是基础方法外,其他的6个方法都是通过调用requests方法来实现的。事实上大家可以这样认为,requests库其实只有一个方法,就是request方法,为了让大家编写程序更方便,所以提供了额外的6个方法。
那么get方法是用这样的方法来封装的:
200代表访问成功,否则失败
如果状态码是200,我们就可以进行访问下面的属性;如果是404或其他,即访问失败
下面看一下实际的例子:
以上显示出了编码的概念。
r.encoding只是从HTTP header中猜测的响应内容编码方式。简单说,网络上的资源他有他的编码,如果没有编码我们将看不懂,将无法手用可解析的的方法来读懂网上的内容,所以要编码这样一个概念。r.encoding这样一个编码方式是从HTTP header中的charset字段获得的,如果HTTP header中有这样的一个字段,说明我们访问的服务器对它资源的编码是有要求的,而这样的编码会获得回来存在r.encoding中。但是并不是所有的服务器对它的资源编码都是有相关要求。
所以,如果当header中不存在charset字段,我们将默认编码为ISO-8859-1。
默认编码为ISO-8859-1,但是这样的编码并不能解析中文。如刚刚的百度网页。
所以requests库提供了一个另外一个备选库编码r.apparent_encoding。事实上这个编码做的事情是根据HTTP 的内容部分,而不是头部分(header),去分析内容中出现文本可能的编码形式。原则来说r.apparent_encoding的编码比encoding更加准确,以为encoding并没有分析内容,它只是从header中的相关字段中提取编码。而apparent_encoding实实在在的根据网页内容分析出的编码方式,并且找到其中可能的编码。所以当我们用encoding不能正确解码返回的内容时,我们要用apparent_encoding来解出相关的编码信息,这也是为什么我们当把apparent_encoding赋encoding之后就能够读到r.test中文的原因。
这样的一行代码就可以获取我们任何的url的资源
找一个来连接爬取一下试试。
Part7 :爬取网页的通用代码框架
其实并不是运用下面的这行代码就一定能获取到我们想要的资源。
因为:
requests库支持6种常用的连接异常:
理解respones类非常重要,respones这样的一个对象返回了所有的网页内容,它也提供了一个方法叫raise_for_status(),这个方法是专门与异常打交道的方法,改方法有这样一个有趣的功能:它能够判断返回的respones类型r的状态是不是200,如果是表示返回的内容是正确的,如果不是它将产生requests.HTTPError这样的异常。
这个方法有什么用呢?
上面的一串代码可以有效地处理我们访问或爬取网页过程中它可能出现的一些错误或者是网络不稳定造成的现象。
如下面的例子:
Part8:HTTP协议及Requests库方法
为了更好的了解和理解这样的一些方法,我们更应该理解HTTP协议。
什么是HTTP协议:
未待完续。。。。。。。。。。。
网友评论