导图社区 Python编程基础数据爬取【总纲】爬虫知识体系
了解网络爬虫(查找资料)、观察网页的代码结构、构思爬虫代码、实现代码(网页下载、网页解析、爬虫爬行方式的实现<数据结构,图的遍历算法(BFS、DFS)>)、思路优化、总结报告。
编辑于2022-08-16 14:08:02 上海游戏主机御三家怎么选 | PS5、Switch、Xbox购买攻略 能让你玩起来的游戏机🎮是最推荐的游戏机。Switch 和 XSS 只要2000块就可以玩起来,价格便宜。Switch是掌机,哪里都能玩。有钱当然推荐 PS5,画质好体验好。 游戏机的生命周期一般在7年左右,所以本身还是非常保值的。 希望大家都能找到自己心仪的游戏机,祝大家玩的开心!
我们在实际的工作和学习接触中,会发现一个比较统一的问题,那就是:随着数据在企业生产经营中的广泛应用,我们究竟该如何借助数据分析的能力,去提升公司业务的运营效率,为企业降本增效呢?也就是我们常说的实现真正的数字化,最终达到企业经营模式的转型。那么这个问题,其实根源在于:我们个人如何培养自己的数据思维?
如果说十大必去的城市的话,我就觉得那些把省级行政区(直辖市除外)放进来评论的,不知是不是跑题了!所以按照包括直辖市在内的叫法,我认为排在前两名的肯定是北京和西安。具体的谁靠前就不好说了,反正都差不多。
社区模板帮助中心,点此进入>>
游戏主机御三家怎么选 | PS5、Switch、Xbox购买攻略 能让你玩起来的游戏机🎮是最推荐的游戏机。Switch 和 XSS 只要2000块就可以玩起来,价格便宜。Switch是掌机,哪里都能玩。有钱当然推荐 PS5,画质好体验好。 游戏机的生命周期一般在7年左右,所以本身还是非常保值的。 希望大家都能找到自己心仪的游戏机,祝大家玩的开心!
我们在实际的工作和学习接触中,会发现一个比较统一的问题,那就是:随着数据在企业生产经营中的广泛应用,我们究竟该如何借助数据分析的能力,去提升公司业务的运营效率,为企业降本增效呢?也就是我们常说的实现真正的数字化,最终达到企业经营模式的转型。那么这个问题,其实根源在于:我们个人如何培养自己的数据思维?
如果说十大必去的城市的话,我就觉得那些把省级行政区(直辖市除外)放进来评论的,不知是不是跑题了!所以按照包括直辖市在内的叫法,我认为排在前两名的肯定是北京和西安。具体的谁靠前就不好说了,反正都差不多。
Python编程基础
环境配置
0.1环境配置-安装python
安装python解释器
下载最新版3.9.5的Windows 64位python安装程序
https;//www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe
安装python解释器
将python解释器安装目录及其script子目录的路径添加到PATH环境变量中;
0.2安装python虚拟环境virtualenv及其工具包
安装python虚拟环境:virtualenv
安装步骤
1、以管理员身份打开控制台:cmd
2、执行命令:pip install -i https://pypi.douban.com/simple virtualenv
安装virtualenv的工具包
安装步骤
1、以管理员身份打开控制台:cmd
2、执行命令:pip install virtualenvwrapper-win
3、设置virtualenvwrapper-win
0.3virtualenvwrapper命令
创建虚拟环境:mkvirtualenv虚拟环境名
查询或进入虚拟环境:woikon[虚拟环境名]
退出虚拟环境:deactivate
删除虚拟环境:rmvitualenv 虚拟环境名
0.4安装集成开发环境-Spyder
图形化的ID工具
新建一个python虚拟环境:
mkvirtalenv spyder-env
在虚拟环境Spyder-env中安装spyder:
pip install -i https://pypi.douban.com/simple spyder
安装成功后,在虚拟环境spyder-env中运行spyder:
spyder
安装后的打开方式
C:\Users\Administrator>workon Pass a name to activate one of the following virtualenvs: ============================================================================== spyder-env C:\Users\Administrator>workon spyder-env (spyder-env) C:\Users\Administrator>spyder (spyder-env) C:\Users\Administrator>
数据爬取【总纲】 爬虫知识体系
Python
基本知识
名字与对象
类型与类
内置对象
自定义对象
实例化
关键字
数据类型
数字
字符串
列表
元组
字典
集合
流程控制
分支结构
循环结构
函数
内置函数
自定义函数
必备参数
默认参数
位置参数
关键字参数
不定长参数
递归
闭包
lambda匿名函数表达式
模块
常用模块
string
math
random
os
shutil
datetime
time
json
I/O基础
文件操作
StringIO
BytesIO
面向对象
基础
封装
继承
Mixin
魔术方法
描述器
数据类型
上下文管理器
迭代器
装饰器
惰性器
生成器
yield
yield from
协程
async
await
高级模块
re
collections
functions
inspect
errno
loging
并发编程
什么是进程、线程
IO密集型与CPU密集型
单核CPU,IO密集型应用
单核CPU,CPU密集型应用
多核CPU,IO密集型应用
多核CPU,CPU密集型应用
多进程和多线程区别
多进程
进程属性
PID
进程方法
is_alive
join
start
close
run
group
使用进程池管理进程
apply
apply_async
map
进程的创建与关闭
通过Process
通过fork创建
通过类
必须实现润方法
进程之间的通信
multiprocess.Queue
Manaager.Queue
Queue.put
Queue.put_nowait
Queue.get
Queue.get_nowait
Queue.full
Queue.empty
多线程
多线程的GIL问题
python多线程是鸡肋吗
线程的创建与关闭
theading模块
线程池
dummy
线程方法
theading.local
theading.current_thread()
serDaemon(True)
start
join
线程属性
多线程通信
queue.Queue
方法和进程Queue一样
Lock互斥锁
acquire
release
死锁的产生
Future实现多进程、多线程
ProcessPoolExecutor
TheadPoolExecutor
协程与异步IO
什么是协程
Python2协程实现
greenlet
gevent
twisted
Python3协程实现
异步IO
asyncio
async/await
aiohttp
事件循环对象
Linux基础
Linux的获取与安装
Virtualbox虚拟机
server版
Rufus
desktop版
基本操作
目标操作及目录结构
文件操作
工具命令
电源、进程、任务管理
进程管理
任务管理
电源管理
VIM编辑器
命令模式基础
编辑模式基础
查找与替换
用户与权限
包管理
自带包管理
虚拟环境
web前端
标签
h、p、strong、b 、em、i
div、span
a
img
ul、ol、li
dt、dl、dd
样式
选择器
字体、文本、背景
盒子模型
浮动与清除浮动
定位
布局
媒体查询
JS语法
基础语法
变量与运算
流程控制
函数
元素获取
改变元素与改变样式
事件
jQuery
jQuery选择器
jQuery元素操作与样式操作
jQuery常用事件
Ajax
表单(form标签)
Python CGI后台
Ajax 原理
Ajax操作
bootstrap
导航条
下拉菜单
分页
输入框组与列表组
模态框
爬虫
请求与响应
协议
URL
统一资源定位符
Query-String
请求参数
Headers请求头
Response
响应
GET与POST的区别
Headers响应头
Cookie和Session
爬虫与反爬虫
反爬虫概述
反爬的前世今生
反爬虫手段
headers
IP被封
验证码
JS渲染
接口加密与JS混淆
数据混淆
行为分析
开发工具
Fiddler
Docker
Charles
MitmProxy
Appium
Chrome 开发者工具
Jupyter Notebook
Urllib库基本使用
urllib.request
请求模块
urllib.error
异常处理模块
urllib.parse
解析模块
urllib.robotparser
解析robots.txt协议模块
Requests库的基本使用
Xpath的基本使用
MongoDB数据库的安装与使用
Pyquery解析库详解与基本使用
使用requests抓取起点小说,并用Pyquery提取数据,存储于MongoDB
BeautifulSoup解析库安装与基本使用
使用aiohttp异步请求代替requests抓取房源信息,并用BeautifulSoup提取数据,存储于MOngoDB
爬虫框架实现
潭州爬虫框架实现
URL管理器(Manager)
HTML下载器(Downloader)
HTML解析器(Fetcher)
数据存储器(Storer)
爬虫调度器(Scheduler)
实战
爬虫大众点评数据存储到MongoDB
破解反爬虫技术
JS渲染与参数加密
Fiddler抓包工具的使用
有道词典的JS加密参数破解
今日头条的JS加密参数破解
落网单曲歌曲链接破解
模拟浏览器
Selenium(webdriver)
Phantomjs
PyV8引擎解析JS
验证码识别
图形验证码识别
极验验证码识别
点触验证码识别
微博宫格验证码识别
代理池的实现
为什么要代理
代理IP分类和设置
高匿名
匿名
透明
使用Flask+Redis实现IP代理词
定时验证IP是否有效
定时检验代理池数量
动态拓展抓取API接口
模拟登录
为什么要登录
京东、新浪微博模拟登录分析
Cookie池源码分析
使用redis存储的账号密码批量登录
获取登录后的Cookies,并存储于redis内
使用redis的Cookies模拟登录
pyspider框架
PySpider框架介绍
PySpider基本使用
PySpider用法详解
APP的抓取
Charles的使用
使用Charles抓取王者荣耀所有英雄皮肤和英雄的信息
MitmProxy的使用
MitmDump的使用
Appinum的使用
使用Appinum,MitmDump抓取摩拜单车位置信息
Scrapy框架
Scrapy框架介绍
Scrapy入门
Selector的用法
Spider的用法
Downloader Midleware用法
Spider Middlerware用法
Item Pipeline用法
Scrapy对接Selenium
Scrapy对接Splash
Scrapy通用爬虫
分布式爬虫
分布式爬虫理念
Rabbit MQ消息队列
Scrapy-Redis源码解析
BloomFitter过滤器对接
Scrapy分布式实现
分布式爬虫部署
Scrapyd分布式部署
ScrapydClient的使用
Scrapyd对接Docker
Scrapyd批量部署
Gerapy分布式管理
参考资料
Python基础编程概念
1.1python的对象与类型-五种基本对象类型
对象与类型
python中所有的东西都是对象
对象使面向对象编程中的一种概念,是包括属性和行为的一种实体
每个对象都具有特定类型,不同类型的对象的属性或行为会有所有不同
五种基本对象类型
字符串:string,简记为str
'helllo woeld!'或"hello woeld!"
整数:integ,简记为int
十进制:64,-64
八进制:0o开头表示八进制,0o100,-0o00
十六进制:0x开头表示十六进制,0x40,-0x40
二进制:0b开头表示二进制,0b100000,-0b10000
浮点数:float
表示形式:1.48,21.(=21.0),.21(=0.21),2.1E2(科学计数法E2为10的2次方)
布尔型:boolean,
简记为bool
True
False
复数:complex
1+2j,-1-1j
1.2type函数-查看对象类型及为什么要区分对象类型
type函数:查看对象类型
使用方法:type(对象)
为什么要区分对象类型
不同类型对象的运算规则不同;
1+1=2 '1'+'1'='11'
不同类型对象在计算机内表示方式不同
整数5的机内表示:0b00000101(8位二进制表示的情况)
字符串'5'的机内表示:0b00110101(8位二进制表示的情况)
浮点数5.的机内表示:0b01000000101000000000000000000000(32位二进制表示的情况)
为什么要区分整数和浮点数
浮点数可以表示小数和整数,表示的数值范围大,不过浮点数计算效率低,需要CPU中提供的专门浮点运算部件提高效率,且浮点数会造成精度损失
1.3python基础运算符概括
算术运算符
+(加),-(减) ,*(乘), /(除), //(整除), %(取余数) ,**(幂运算,前一个数是底数,后面的是指数)
关系运算符
==()相等,!=(不等于),>,>=,<,<=
逻辑运算符
and,or,not
1.4算术运算符、关系运算符和逻辑运算符及运算符优先级
算术运算符
关系运算符
逻辑运算符
运算符优先级
从下到上,从低到高
与数学相同,可以加括号强制先算
1.5变零及标识符的命名规则
变量
变零适用于引用对象的标识符
语法:变量名=对象(可以用变量名访问对象)
标识符命名规则
标识符 指可以由用户自行设置的名字,例如:变量、函数、类以及模块等名字
命名规则:
1、长度不限
2、只能包含字母、数字和下划线
3、首字符不能是数字
4、大小学敏感
5、python中特殊含义的关键字不能用
1.6数据的输入与输出
数据输入:input(prompt=None,/)
函数名:input
参数:prompt (提示信息,默认为None,即无)
返回值:字符串对象
由于input总是返回的字符串对象,因此你需要将其转换为你所需要类型的对象,示例:
radius = float(input('请输入圆的半径:'))
输出:print(value,...,sep='',end='\n')
函数名:print
参数:value,... (要输出的对象序列)
参数:sep (输出对象时的分隔符,默认为空格)
参数:end (输出完毕后的结束符,默认为换行)
返回值:字符串对象
示例
1.7内置数值函数、内置数学模型和range函数
常用内置函数
内置数学模块
math
要使用math模块内的方法或属性,需要用impo math命令导入该模块
math模块包含的内容
几个常数:自然常数e、圆周率pi;
三角函数:cos、sin、tan
反三角函数:acos,asin,atan,atan2
对数函数:log,log10,log2
取整函数:ceil,floor
角度和弧度转换函数:degrees,radians
使用math模块内容
获取圆周率pi:math.pi
计算30角度的余弦值:math.cos(math.randians(30))
range函数
range函数可接受3个参数:(下限值,上限值,步长),函数会返回一个从下限值开始,到上限值-1结束的range对象,该对象中迭代值之间的差值等于步长。如果省略步长,则默认取1
1.8基础程序控制结构及程序
程序控制结构
三种基础程序控制结构(所有程序设计语言包含一下3中程序控制结构)
顺序机构:编写是什么顺序,执行是就是什么顺序
选择结构:根据条件情况,选择不同的执行路径
循环结构:根据条件情况,重复执行一段相同代码
选择结构
if语句
if...else语句
if...elif...else语句
程序流程图符号说明
1.9if语句和if...else语句
if语句
if条件: 缩颈语句块 其他局域
冒号表示子语句
按tab键 等于 按空格四次 便于缩进
子语句缩进相同
流程图
代码示例
if...else语句
if 条件: 缩进语句块1 else: 缩进语句块2 其他语句
流程图
代码示例
1.10if-else三元表达式、if语句嵌套及多分支选择结构
使用if...else语句编写分支结构,由于其涉及的元素相当简单,感觉写多行代码太占空间时,可以使用if...else三元表达式替换
if语句嵌套
如果分数大于等于60分,且是女生,则程序输出“该女生及格”,否则输出“不及格”或“不是女生”
多分支选择结构
将分数转换为等级输出:
0-59:E; 60-69:D; 70-79:C; 80-89:B; 90-100:A;
1.11循环结构-while语句、break语句、comtinue语句
while语句
while 条件: 缩进语句块(循环体)
判断条件真假,如果为:
True,则执行循环体; False,则退出whil循环
示例:计算1-100之间的整数之和
for语句
break语句
break语句一般用于循环体内配合选择结构使用,用于在循环执行过程中,某种情况发生时,终止整个循环的执行
配合if语句使用
continue语句
continue语句也是用于循环体内,配合选择结构,在某种情况发生时,中止本次循环的执行,而继续下一次循环的执行
1.12循环结构-for语句及演示
for 变量 in 可迭代对象: 缩进语句块(循环体)
依次遍历可迭代对象中的每一个元素,如果该元素不为空,那么将该元素赋值给变量,然后执行循环体
可迭代对象可以是
列表:[1,2,3,4,5]
元组:(1,2,3,4,5)
字符串:'abcde'
range对象:range(1,10)
示例