程序笔记
发布时间:2022-07-05 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了迅速入门爬虫数据清洗与可视化,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
数据爬取与分析
1. 基础知识
1.1 数据分析的基础知识
数据分析的一般流程:
明确目标-》采集数据-》数据清洗与分析-》绘制图表并且可视化-》得出结论
1.2 具有python特色的程序
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/f8fe34c42afdca705746a714952422f2.png)
1.3 字符串切片
1 循环打印嵌套列表:movies=[“the holy”,1975,“terry jones”,91,[“graham”, [“MIchael”,“john”,“gilliam”,“idle”,“haha”]]]c;实现以下形式的输出:
The holy
1975
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/58f31f1c29c3e2c91f99f3bfd6e75e31.png)
2、字典值操作
有如下值集合[11,22,33,44,55,66,77,88,99,90]c;将所有大于66的值保存至字典的第一个key中c;将小于66的值保存至第二个key的值中。即:{‘k1’:大于66的所有值,‘k2’:小于66的所有值}
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/dcb47a11b8438b2ef36b44ceaa1683b9.png)
2. 数据采集-爬虫的设计与实现
2.1 两条技术路线:
-
爬虫框架:scrapy 、SELEnium
-
request库c;urlib原生爬虫
2.2 爬虫概念:
-
网络爬虫
网络爬虫是一种按照一定规则c;自动抓取互联信息的程序或者脚本。
由于互联网数据的多样性c;资源的有限性c;现在根据用户需求定向抓取相关网页并分析c;已经成为当今主流爬取策略
-
爬虫的本质
模拟浏览器打开网页c;获取网页中我们想要的部分数据
-
爬虫工作流程
- 观察页面特征:使用Ctrl+u查看网页源码c;选中某元素c;进行审查
- 请求目标网页并获得相应
- 定义信息提取规则c;使用re(正则)第三方网页解析器c;beautiful soup xpath bs4
- 提取网页数据并保存
-
数据通常需要通过解析c;解析方式:
定义信息提取规则c;使用re(正则)第三方网页解析器c;beautiful soup xpath bs4
2.4 Scrapy 爬虫
2.4.1 Scrapy 爬虫的主要部件以及作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHCwfals-1634735959385)(C:/Users/Lenovo/ApPDAta/roaR_720_11845@ing/Typora/typora-user-images/image-20211019203520100.png)]
- Scrapy ENGIne(引擎): 负责Spider、ItemPipeline、Downloader、scheduler中间的通讯c;信号、数据传递等。
- scheduler(调度器): 它负责接受引擎发送过来的request请求c;并按照一定的方式进行整理排列c;入队c;当引擎需要时c;交还给引擎。
- Downloader(下载器):负责下载Scrapy ENGIne(引擎)发送的所有requests请求c;并将其获取到的Responses交还给Scrapy ENGIne(引擎)c;由引擎交给Spider来处理
- Spider(爬虫):它负责处理所有Responses,从中分析提取数据c;获取Item字段需要的数据c;并将需要跟进的URL提交给引擎c;再次进入scheduler(调度器)
- Item Pipeline(管道):它负责处理Spider中获取到的Itemc;并进行进行后期处理(详细分析、过滤、存储等)的地方.
- Downloader Middlewares(下载中间件):可以自定义扩展下载功能的组件(代理、cokies等)。
- Spider Middlewares(Spider中间件):可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入spider的Responses;和从Spider出去的requests)
2.4.2 Scrapy 爬虫的工作流程
- 引擎从调度器中取出一个链接(URL)用于接下来的抓取
- 引擎把URL封装成一个请求(request)传给下载器
- 下载器把资源下载下来c;并封装成应答包(ResponsE)
- 爬虫解析Response
- 解析出实体(Item),则交给实体管道进行进一步的处理
- 解析出的是链接(URL),则把URL交给调度器等待抓取
2.4.3 与传统的request爬虫对比
- scrapy是封装起来的框架c;他包含了下载器c;解析器c;日志及异常处理c;基于多线程c; twisted的方式处理c;对于固定单个网站的爬取开发c;有优势c;但是对于多网站爬取 100个网站c;并发及分布式处理方面c;不够灵活c;不便调整与括展。
- request 是一个http库c; 它只是用来c;进行请求c;对于http请求c;他是一个强大的库c;下载c;解析全部自己处理c;灵活性更高c;高并发与分布式部署也非常灵活c;对于功能可以更好实现
2.4.4 scrapy创建爬虫的流程
-
手动创建scrapy项目夹 p (mkdir p)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/4dba9d6065ea7dc67fd2cdbf19a599c1.png)
-
启动命令行c;进入到该项目如 cd 到p夹下
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/8ff96948a9ee36e046ab5c1af28980f8.png)
-
scrapy startproject 项目名称
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/0c163b9fe9741faaf6c83560f4a71da4.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/83c4d124ae54f70b091340c4c4088989.png)
cd E:/p/项目名称进入到该项目夹后c;然后执行 scrapy genspider XXX XXX
@H_944_194@
-
配置信息c;配置itempiplines等的设置
后面就是修改配置文件setTings.py部分的配置c;定义item存数据
-
编写爬虫逻辑
在我们的ptest里面编写爬虫逻辑
2.5 SELEnium 爬虫框架
2.5.1 适用场景
爬取动态页面c;用于web应用测试的工具c;SELEnium测试直接在浏览器运行c;可以模仿人的操作c;可以有效应对反爬机制
2.5.2 安装与配置
- pip install
- 用anaconda环境
- pycharm 直接下载库
2.5.3 定位元素方式
有很多种元素定位的方法c;比如基于id、name、xpath、css SELEctor等方式来定位
-
返回单个元素:
- find_elemenT_By_id()
- find_elemenT_By_name()
- find_elemenT_By_xpath()
- find_elemenT_By_link_text()
- find_elemenT_By_partial_link_text()
- find_elemenT_By_tag_name()
- find_elemenT_By_class_name()
- find_elemenT_By_css_SELEctor()
-
返回列表:
-
find_elements_by_name()
-
find_elements_by_xpath()
-
find_elements_by_link_text()
-
find_elements_by_partial_link_text()
-
find_elements_by_tag_name()
-
find_elements_by_class_name()
-
find_elements_by_css_SELEctor()
因为id是唯一的所以我觉得不能返回列表
3 . 数据库连接与查询
3.1 Mysql数据库
3.1.1安装与配置
- 安装mysql
- 最好再安装一个mysql用户图形化管理界面比如navicate
- 配置环境变量
- 下载pymysql库
3.1.2 python操作mysql数据库
操作步骤:
- 新建数据库
- 新建表
- 连接数据库
- 向当前数据库中的表插入数据
3.2 MongoDB 数据库
3.2.1安装与配置
- 安装MongoDB
- 最好再安装一个MongoDB用户图形化管理界面比如navicate
- 配置环境变量
- 下载pymongo库
3.2.2 python操作mysql数据库
操作步骤:
- 新建连接
- 新建数据库
- 连接数据集
- 向当前数据集下插入数据
4. 数据分析
4.1 numpy
4.1.1 数组的创建
import numpy as np
np.ones(5)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/fa9652044e20f7125a79d32a7ef7adc0.png)
A=np.array([[1,2],[3,4]])
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/b84657e4e952cba7684ba3eaacafd7e0.png)
np.zeros((2,3))
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/e8039c4334f3c2d5423a7bc34019fe85.png)
4.1.2 数组的变形
a2=np.arange(8).reshape(2,4)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/97ec0e65f11897634d9e37115bc5fe5a.png)
4.1.3 数组的计算
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/1983159e98cffbfb701bd5a935e46193.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/8c1507603348b6f50e3b503dd479edd7.png)
4.2 pandas
4.2.1 数据读写、选择、整理和描述
-
从csv中读取数据
import pandas as pd
df =pd.read_csv("./数据阿巴巴巴.csv")
其实还可以读取html、txt
高级操作:
df=pd.read_csv("./shujv.cvs",delimiter=",",encoding="utf-8",header=0)
#delimiter以怎么样的方式来分割;解码方式utf-8;设置0行为头部
-
向csv中写入数据
df.to_csv("./ababab.csv",columns=["寶貝","价格"],index=false,header=TruE)
不要索引c;以列头这两行导入
-
数据选取
-
行的选取
rows =df[0:3]
选择第0行到第2行数据
r=df.head()
选取前五行
-
列的选取
cols =df[['宝贝','价格']]
-
块
取0到3行的宝贝和价格
df.loc[0:3,['宝贝'c;'价格']]
-
操作行和块
从已有的列中创建一个新列
df['销售额']=df['价格']*df['成交量']
df.head()#查看一下前五行数据
-
根据条件过滤行
df1=[(df["价格"]<100)&(df["成交量"]>1000)]
筛选出c;价格小于100c;成交量大于1000的数据
-
数据整理
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/dd6f8088e0a6fe8f62eb14968c2de8d2.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/28df4aedbf41f44c646f12b76009cb89.png)
-
数据描述
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/f94fbe7ca30d37c2cedd887637a7bb99.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/38de21e5c2e172296cc6fd224b65d91d.png)
4.2.2 数据分组、分割、合并和变形
-
分组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzhROGsp-1634735959479)(C:/Users/Lenovo/ApPDAta/roaR_720_11845@ing/Typora/typora-user-images/image-20211019232946860.png)]
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/933c0ba2e0b811170d48e4629718bc7d.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/ace96a48b2774dccc65193d23b7a259b.png)
-
分割
前闭后开
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/c068adb5460352db37dcccb9b672b919.png)
-
合并
-
dataframe合并
pd.merge(df1,df2,how='left',on="卖家")#左连接
pd.merge(df1,df2,how='outer',on="卖家")#外连接
pd.merge(df1,df2,how='Right',on="卖家")#右
不指定on那个列就默认相同的选择列名相同的一列
-
索引合并
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/920179efbac99d7b200bdc6dd7aad7d9.png)
-
轴向连接
按axis=1列拼接c;axis为0就是按行c;默认就是行。
pd.contact([col1,col2,col3],axis=1)
-
变形
4.2.3 缺失值
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/f04b7788735b77bc927c3d7b7f400a17.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/ea27111f875385b16394f14ce5660605.png)
5. 数据可视化
5.1 matplotlib绘图操作:
-
初始化c;导库c;乱码c;设定背景
import matplotlib
import matplotlit.pylot
-
生成一个画布(规定画布大小c;坐标系)
fig,axes =plt.subplots(1,2,figsize=(12,5))
-
绘图(形状)
axes[0].hit(df,bins=20)
-
自动调整样式
fig.tight_layout()
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/ec3fac0ff3d93c84083a0c5434a02f88.png)
5.2 案例
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/ec3fac0ff3d93c84083a0c5434a02f88.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/05e91f0d4708fe262987c300634f56a8.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/9a22f1fb3d5f6d6a225f74223c87e1d1.png)
![迅速入门爬虫数据清洗与可视化 迅速入门爬虫数据清洗与可视化](https://pic.wangt.cc/download/pic_router.php?path=https://img-blog.csdnimg.cn/img_convert/2340e1fd70eb13d9ac2298ead9bbc81a.png)
大佬总结
以上是大佬教程为你收集整理的迅速入门爬虫数据清洗与可视化全部内容,希望文章能够帮你解决迅速入门爬虫数据清洗与可视化所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。