安装库
对于爬虫,request库是必不可少的,固然,安装requests库这一过程也是不可避免的,对于python中的各类第三方库,安装起来都是比较简单的!
通常须要先在cmd shell窗口中用命令行转至python安装路径下的Scripts文件夹路径下(Scripts文件夹是用来保存安装python第三方库的文件夹),如D:\Python\Scripts,
而后再输入如下代码,便可安装:前端
pip install requests
或者,为了不出如今安装时出现read time out的大红一片,能够切换使用清华镜像的文件安装,即:python
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
ps:这种方法也一样适用于各类第三库的安装方法,即把后面的库名更改为另外一个库,便可!web
测试:
既然安装好了requests库,为了检测有没有安装好成功,通常最简单的方法就是打开python的idle窗口,无需新建.py文件,只须要在窗口中输入:shell
import requests
而后回车,如若没有报错,即安装成功!浏览器
体验:
安装成功后,让咱们在此窗口下,继续体验下去。网络
>>>import requests
>>>url="http://www.baidu.com"
>>>r=requests.get(url)
>>>r.status_code
200
>>>r.text
请先一一跟着以上代码输入进idle中,相信对于你们第一反应是好奇最后输出的内容是什么,为何有许多看不懂的字符,先不急,小编一一为你解答:
一、代码的第一行,无需讲解,就是再简单不过的引入第三方库罢了;
二、代码的第二行与第三行其实是一体的,在这里为了让初学者有一个更好的了解,才这么设计,固然,也能够改成下面这一行代码样式:app
r=requests.get("http://www.baidu.com")
requests.get(url): 表示请求访问某一url地址,即一个网站的网址,很容易看出此次咱们访问的是最常使用的百度主页的url;
三、r.status_code:这行代码的做用是用来判断爬虫访问网站是否成功,它会返回一个值,即状态码。
如若返回值为200,则表明爬虫访问网站成功;反之,如若返回值为其它(如404),则说明访问网站失败,至于失败的缘由有着许多种,这里暂且不讨论;
四、如今,只有最后一行代码了,也是你们对此很是好奇的一行代码了,其由于是返回的内容对于新入门学者们不是很熟悉,这里只作简单的一些介绍:
(1)返回的内容为网页的源代码,即以上代码所返回的则是百度主页的源代码。那什么是源代码呢?学过前端的或者有接触过前端的对此必定很熟悉的,固然,另外的也不要担忧,由于这种源代码是很容易理解的,即HTML(超文本标记语言),它是由一对又一对的标签所组成的,你们能够随意打开浏览器,按下键盘的F12键,即会弹出一个对话框,能够点击“元素”便可查看源代码,固然,也可使用鼠标右击网页中的任意位置,点击“查看源代码”便可查看;
(2)相信比较细心的小伙伴会发现,在查看百度主页的源代码时,会发现爬虫所返回的内容跟本身查看的源代码有所不一样,即查看爬虫返回的内容时,会发现有许多不认识的字符,且乱七八糟的,咱们把这种状况称之为“乱码”,之因此会出现“乱码”这种现象是由于其编码,
什么是编码呢?这里因为篇幅问题,请各位小伙伴们请转至百度百科大体了解一下吧!而这种网页常见的编码有如下几种:python爬虫
ISO-8859-1
utf-8
GBK
……
以上三种编码是网页中常见的三种,其中,utf-8这个编码是咱们人类所能看懂的一种编码,也就是所谓的“万能编码”。看到这里,相信有人已经想出怎么解决上述所返回内容出现的乱码方法了吧!
解决乱码:
一、为了解决乱码,首先,就不得不先了解网页的原来编码是什么?能够在浏览器中经过查看源代码的头标签中查看获得,也能够利用requests库这个庞大的第三库中的功能:svg
>>>r.encoding #从HTTP header中猜想响应内容的编码方式
>>>r.apparent_encoding #从内容中分析出响应内容编码方式(备选编码方式)
这二者的区别是什么呢?
(1)网络上的资源都是有编码的,没有编码咱们将看不懂其内容!
(2)r.encoding:表示若是header(头部)中不存在charset,则认为编码为ISO-8859-1编码;
(3)r.apparent_encoding:根据网页内容分析出的编码方式。学习
看了这两行代码以及了解其区别,相信仍是有小伙伴们不太清楚这两行代码以及以上讨论编码的问题究竟有何用,是否是有点满脑子的问好呢?好的,废话少说,正式进入乱码的解决。
二、其实有一个很简单的方法,即:
>>>r.encoding='utf-8'
在r.text这行代码前插入上面这一行代码,返回的结果就确定不会再出现乱码了,不信的,你能够去试试!!!
这行代码所解决的问题就是替换原来的编码为utf-8编码。
附源代码:
此代码是返回百度主页的源代码,你们能够尝试更改url地址,去访问其余网站试试;同时,顺便提一下:
r.text[:1000] #只打印网页的前1000个字符
这行代码的做用是为了不某些大型网站所返回的内容过多,致使IDLE窗口出现异常、卡顿或者死机状况,能够很方便的使用这行代码,根据本身的需求,设置须要的内容范围,请注意这是一个区间,也能够设置成只返回网页的后1000个字符:
r.text[1000:]
好了,废话少说,请自阅如下源代码:
import requests
url="http://www.baidu.com"
r=requests.get(url)
print("状态值为:")
print(r.status_code) #打印输出状态值
print("头部编码为:")
print(r.encoding) #从HTTP header中猜想的响应内容编码方式
print("备选编码为:")
print(r.apparent_encoding) #从内容中分析出响应内容编码方式(备选编码方式)
r.encoding='utf-8' #替换原来的编码换成utf-8编码
print("打印网页的前1000个字符长度内容:")
print(r.text[:1000]) #打印网页的前1000个字符长度内容
预留:这是一篇很基础的爬虫文章,是面对小白以及刚入门学习python爬虫而写的(固然也包括我),仅仅到这里是不够的,这仅仅还不到0.01%,同时,相信你们也以为对所返回的内容和本身在浏览器上所看到的源代码虽是相同的,可是所返回的内容仍是不太整齐,仍是有点乱。若是须要解决这个问题,咱们还得须要另一个第三库,即所谓的“美味汤”(bs4)。如若对你有所用,请期待小白的下一篇博客。