python-12 网络爬虫和数据可视化

python-12 网络爬虫和数据可视化

一、网络爬虫

1、搜索引擎-蜘蛛

  爬虫是按照一定规则,自动地提取并保存网页中信息的程序;蜘蛛沿着网络抓取猎物,通过一个节点之后,顺着该节点的连线继续爬行到下一个节点,最终爬完整个网络的全部节点。 爬虫与蜘蛛类似,通过向网站发起请求获取资源,提取其中有用的信息。

2、requests库

  requests库是Python实现的一个简单易用的HTTP库,支持HTTP持久连接和连接池、SSL证书验证、cookies处理、流式上传等。向服务器发起请求并获取响应,完成访问网页的步骤。requests简洁、容易理解,是最友好的网络爬虫库。

1)http请求类型

1
2
3
4
5
6
7
8
9
10
requests.request():构造一个请求 
requests.get():获取HTML网页
requests.head():获取HTML网页头信息
requests.post():提交POST请求
requests.put():提交PUT请求
requests.patch():提交局部修改请求
requests.delete():提交删除请求
requests.options():获取http请求

#返回的是一个response对象

2)response对象

1
2
3
4
5
6
7
包含服务器返回的所有信息,例如状态码、编码形式、文本内容等;
也包含请求的request信息
.status_code:HTTP请求的返回状态
.text:HTTP响应内容的字符串形式
.content:HTTP响应内容的二进制形式
.encoding:(从HTTP header中)分析响应内容的编码方式
.apparent_encoding:(从内容中)分析响应内容的编码方式

3)使用

定制请求头:requests的请求接口有一个名为headers的参数,向它传递一个字典来完成请求头定制;

设置代理:一些网站设置了同一IP访问次数的限制,可以在发送请求时指定proxies参数来替换代理,解决这一问题;

10DANd.png

3、 页面解析器

  使用requests库下载了网页并转换成字符串后,需 要一个解析器来处理HTML和XML,解析页面格式,提 取有用的信息。

10DNvV.png

二、数据可视化

1、numpy矩阵处理库

  numpy是Python用于处理大型矩阵的一个速度极快的数学库 可以做向量和矩阵的运算,包括各种创建矩阵的方法,以及一般的矩阵运算、求逆、求转置。它的很多底层的函数都是用C写的,可以得到在普通Python中无法达到的运行速度。

1)numpy方法

1
2
3
4
5
6
7
8
9
10
#矩阵计算 
创建矩阵 a = np.matrix([])
矩阵求逆 a.I
矩阵转置 a.T
矩阵乘法 a*b或np.dot(a,b)

#对象属性
np.shape 数组形状,矩阵则为n行m列
np.size 对象元素的个数
np.dtype 指定当前numpy对象的整体数据

2)实例

10rhQ0.png

2、matplotlib绘图库

  matplotlib是Python的一个绘图库,它包含了大量的工具,可以使用这些工具创建各种图形,简单的散点图、折线图,甚至三维图形、动画等。

参考画图:http://matplotlib.org/gallery.html

3、绘制函数图像基本思路
  通过将图像上一些点的坐标连接起来,即可绘制函数 的近似图像,当点越多时,所绘图像越接近函数图像 。1)numpy库的linspace()函数生成数组

1
numpy.linspace(<start>,<stop>,<num>)

  生成一个存放等差数列的数组,数组元素为浮点型, 包含三个参数,分别是:数列起始值、终止值(默认 包含自身)、数列元素个数。

2)matplotlib库的plot()函数用来画图,可以设定图形颜色、线条线型、以及做标注等。

4、简单函数图形

1)一个简单图形

1
2
3
4
5
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2*np.pi,50)
plt.plot(x,np.sin(x))
plt.show()

10yQHO.png

2)多个简单图形

1
2
3
4
5
6
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2*np.pi,50)
plt.plot(x,np.sin(x),
x,np.cos(x))
plt.show()

10yTPJ.png

5、定制线形

10yOr6.png

6、标签图例

1)坐标轴标签:plt.xlabel()、plt.ylabel()

2)图形标题:plt.title()

7、散点图和直方图

1)散点图

1
2
3
4
5
6
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2*np.pi,50)
y=np.sin(x)
plt.scatter(x,y)
plt.show()

10gSgA.png

2)直方图

1
2
3
4
5
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randn(1000)
plt.hist(x,50)
plt.show()

10gnvn.png

欢迎打赏,谢谢
------ 本文结束------
0%