为什么要学 Python
数据分析需要多个阶段, 抓取数据仅是一个环节, 数据需要不断采集, 更新, 清洗, 分析, 可视会展示等多个阶段, 这些过程中 Python 都能应对自如. 属于性阶适中的工具.
vsc
对比 C 语言, 效率弱一些, 但仅是运行效率, 开发效率高很多, 多数项目恰是开发占比高, 一直开发, 偶尔运行成为常态
vs java
无需编译, 省去很多麻烦, 更适合一次性应用, 或小团队使用, 更灵活.
Life Is Short, Use Python
推荐下我自己创建的Python学习交流群 696541369,这是Python学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。
Python 语言基础
区别
Python 2.x 和 3.x 有很大区别
2to3
使用 2to3 可以自动升级大部分代码
3.x 新特性
https://www.asmeurer.com/pyth…
版本隔离 virtualenv
$ pip3 install virtualenv
$ virtualenv --no-site-packages venv
$ source venv/bin/activate
(venv)$
(venv)$ deactivate
$
{} 大字典 Dictionary 键值对, 键唯一, 按键可以很快随机查找
[] 方列表 List 元素存储紧凑, 顺序固定, 可排序
(1,) 圆元组 tuple
set() 设集合 set 集合中,元素唯一,无相同元素
input 终端输入
读文件
open(), read() seek()
写文件
写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件:
>>> f = open('/Users/michael/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()
数组
面向对象基本概念与使用
游戏学编程,熟悉语法, 流程结构, 函数等https://codecombat.com/
ide: pycharm, vs code, 断点调试
猜随机数
成三角形概率
求质数的几种境界
质数概率
png 格式简析
png, gif, jpg, svg, webp
装饰器
decorator @
生成器
generator
yeild
lambda 表达式
zip()
map()
filter()
协议头://域名:端口/路径/文件?参数1=参数值1&参数2=参数值2#页面锚点
https://www.tutorialspoint.co…
无连接: 请求之间不需要保持连接
媒介无关: MIME 类型确定数据内容
无状态: 用 cookie 或参数跟踪状态
请求头
通过观察 浏览器 -> 开发者工具 学习
重点掌握
Cookie
Referer
User-Agent
Content-Type
请求方法
GET
最常见, 一般通过 url 传递参数, 幂等性
POST
提交操作, 大量数据时, 上传文件时用
响应状态码
200:请求成功 处理方式:获得响应的内容,进行处理
301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 查看头里的 Location
302:请求到的资源在一个不同的URL处临时保存 查看头里的 Location
400:非法请求
401:未授权
403:禁止
404:没有找到
500:服务器内部错误
502:错误网关 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
测试工具
curl
结合浏览器的使用, -o 参数,
wget
断点续传之 -c 参数, 批量下载时的通配符使用
chromium, telnet, netcat
学习工具
w3cschool.com
格式
工具
适当了解
2to3 urllib.py
练习指导:
Python3 启动, 退出 Ctrl+D
2to3 –help 找出 -w 回写参数
两种执行方式, 命令行, 交互式
Requests 库
$ pip installScrapy lxml
非常方便并且功能强大的爬虫框架,支持多线程爬取、JS动态解析,提供了可操作界面、出错重试、定时爬取等等的功能,使用非常人性化。
安装
$ pip install pyspider
使用
$ pyspider all
然后浏览器访问http://localhost:5000
$pip install selenium
用浏览器进行加载页面
驱动浏览器进行搜索
用 PhantomJS 保存页面为图片
PhantomJS 相当于无界面浏览器, 可执行脚本和 CSS 内存渲染
phantomjs helloworld.js
数据提取工具
html, xml, xpath, selector, json
掌握起来, 有一定难度, 多数编辑器支持, 使用场景广, 但不适合结构化数据(xml, json, html)
Python Re模块提供
其于 Dom 模型的 jQuery selector
在 Selenium 中或浏览器中直接使用
XPath语言是基于一个树形结构表示的XML 文档,提供的导航能力,通过多种属性选择节点的一个标准。
XPath 是提取 XML 的工具, 所以需要对 HTML正行校正
校正工具:
使用 lxml 完成解析 HTML
最稳定的结果是使用 lxml.html 的 soupparser。你需要安装 python-lxml 和 python-beautifulsoup,然后你可以执行以下操作:
Firefox 和 XPath
2017之前的 firefox 版本 + Firebug
2017后 Firefox Developer Edition + Chropath addon
https://addons.mozilla.org/en…
Chromium 和 XPath
在Chrome/ Firefox浏览器中打开网站
按Ctrl + Shift + I(将打开开发人员工具)Alt+CMD+I
选择仪器窗口顶部的“元素”
选择仪器窗口底部的放大镜
在浏览器中选择所需的元素
右键单击DOM树中的选定行,然后选择“复制XPath”
Chrome Extension XPath Helper (需要科学上网)
注意引号转义, 可用现成库
安装MySQL驱动
由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持Python的MySQL驱动来连接到MySQL服务器。MySQL官方提供了mysql-connector-python驱动,但是安装的时候需要给pip命令加上参数–allow-external:
$ pip install mysql-connector-python --allow-external mysql-connector-python
如果上面的命令安装失败,可以试试另一个驱动:
$ pip install mysql-connector
我们演示如何连接到MySQL服务器的test数据库:
# 导入MySQL驱动:
>>> import mysql.connector
# 注意把password设为你的root口令:
>>> conn = mysql.connector.connect(user='root', password='password', database='test')
>>> cursor = conn.cursor()
# 创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 插入一行记录,注意MySQL的占位符是%s:
>>> cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
>>> cursor.rowcount
1
# 提交事务:
>>> conn.commit()
>>> cursor.close()
# 运行查询:
>>> cursor = conn.cursor()
>>> cursor.execute('select * from user where id = %s', ('1',))
>>> values = cursor.fetchall()
>>> values
[('1', 'Michael')]
# 关闭Cursor和Connection:
>>> cursor.close()
True
>>> conn.close()
User-Agent
新华网
频率
36kr.com
taobao.com
用户点击才展示内容
csdn.net 博客
登录后可用内容
taobao.com
各种人机验证 Captcha
封IP, 封ID
编码问题 GB2312, GB18030, GKB, UTF-8, ISO8859-1
GB18030 > GBK > GB2312 但相互兼容
UTF-8与以上编码不兼容
网友评论