产品实践-怎么去进行竞品分析
产品实践-怎么去进行竞品分析
Python解析网页-XPath和requests-html.xmind
XPath
定义
`XPath`(`XML Path Language`)是一种用于在XML文档中定位和选择节点的语言
用途
解析和操作XML文档
安装配置
安装lxml
pip install lxml
使用lxml
from lxml import etree
XPath常用规则
XPath使用路径表达式来描述节点的位置和关系
常用规则
nodeName
选取此节点的所有子节点
/
从当前节点选择直接子节点
//
从当前节点选择子孙节点
.
当前节点
..
选取当前节点的父节点
@
获取属性
高级用法说明
选择特定节点类型
node()
匹配任何节点
text()
匹配文本节点
element
匹配元素节点
@attribute
匹配属性节点
属性选择
[@属性名]
匹配具有特定属性的节点
[@属性名=值]
匹配属性值等于给定值的节点
位置选择
[位置]
Python解析网页.xmind
Python解析网页
Beautiful Soup
定义
是一个可以从HTML或XML文件中提取数据的Python库
优点
会帮你节省数小时甚至数天的工作时间
能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.
支持`Python`标准库中的HTML解析器
解析器
Python标准库
使用方法
`BeautifulSoup(markup, "html.parser")`
优势
Python的内置标准库执行速度适中文档容错能力强
劣势
Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器
使用方法
`BeautifulSoup(markup, "lxml")`
优势
速度快文档容错能力强
劣势
需要安装C语言库
lxml XML 解析器
使用方法
`BeautifulSoup(markup, ["lxml-xml"])``BeautifulSoup(markup, "xml")`
Python-selenium爬取.xmind
selenium
定义
Selenium是一个用于自动化Web应用程序测试的开源工具集
组成
Selenium的核心组件是WebDriver,它可以直接与浏览器进行交互,并模拟用户操作
特点
- 开源、免费
- 多浏览器支持:FireFox、Chrome、IE、Opera、Edge;
- 多平台支持:Linux、Windows、MAC;
- 多语言支持:Java、Python、Ruby、C#、JavaScript、C++;
- 对Web页面有良好的支持;
- 简单(API 简单)、灵活(用开发语言驱动);
- 支持分布式测试用例执行。
selenium模拟浏览器的抓取
下载与导入
File
Settings
选择项目
+
输入selenium
新建python文件,导入selenium中的webdriver
from selenium from webdriver
下载webDriver
网址
https://googlechromelabs.github.io/chrome-for-testing/
将下
Python正则解析网页.xmind
## 什么是正则表达式
**正则表达式**,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),正则表达式描述了一种**字符串匹配的模式**(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
Python爬虫基本使用 requests安装 HTTP HTTPS 抓包
爬虫
定义
一种用来自动浏览万维网的网络机器人
网络爬虫就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序
爬虫并不是Python独有的
学习爬虫原因
筛选
浏览网站时所能看见的数据都可以通过爬虫程序保存下来
应用场景
数据展示
将爬取的数据展示到网页或者APP上
数据分析
从数据中寻找一些规律
自动化测试
比如想要测试一个前端页面的兼容性、前端页面UI是否有bug,只需要模拟执行表单提交、键盘输入等页面操作
爬虫技术与反爬虫技术
影响
在于野蛮爬取,即`多线程爬取`
采取反爬措施
IP频率、流量限制
请求时间窗口过滤统计
识别爬虫
Robots协议
是“**网络爬虫排除标准**”是网站跟爬虫间的一种协议
用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件
以Allow开头的URL地址
允许某爬虫引擎访问
以Disallow开头的URL地址
不允许某爬虫
Python界面案例 Tkinter
Tkinter 是使用 python 进行窗口视窗设计的模块
Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口
提供tk支持的模块
tkinter
TK主模块
tkinter.colorchooser
选择颜色
tkinter.commondialog
定义的对话框的基类
tkinter.filedialog
通过指定通用对话框,打开或保存文件
tkinter.font
帮助操作字体的工具
tkinter.messagebox
访问标准的 Tk 对话框
tkinter.scrolledtext
内置纵向滚动条的文本组件
tkinter.simpledialog
基础对话框和一些便捷功能
tkinter.ttk
为tkinter主模块中的许多经典小部件提供了现代替代品
Tkinter创建窗口
步骤
导入tkinter的库
from tkinter import *
创建一个窗口
window = Tk()
设置窗口标题
window.title("窗口标题栏")
设置
Python数据库编程 SQLite MySQL
SQLite
定义
SQLite是嵌入式关系数据库管理系统。 它是独立的,无服务器的,零配置和事务性SQL数据库引擎
作用
可以自由地用于商业或私有的任何目的
本质
数据库文件
SQLite是一种开源,零配置,独立的,独 立的,旨在嵌入到应用程序中的事务关系数据库引擎
与其它数据库的区别
SQLite没有单独的服务器进程
直接读取和写入普通磁盘文件
具有 多个表,索引,触发器和视图的完整SQL数据库包含在单个磁盘文件中
优点
不需要一个单独的服务器进程或操作的系统(无服务器的)
SQLite 不需要配置
存储在一个单一的跨平台的磁盘文件
轻量级
不需要任何外部的依赖
完全兼容ACID,允许从多个进程或线程安全访问
支持 SQL92(SQL2)标准的大多数查询语言的功能
使用 ANSI-C 编写的,并提供了简单和易于使用的 API
可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行
SQLite是python自带的数据库,
Python标准库 字符串 日期操作 文件操作
字符串
循环打印字符串中的字符
temp: str="12345678"
h = 0
for i in temp:
print(i)
h+=int(i)
print(h)
常见字符串操作
string.ascii_letters
获取26个大小写字母
string.ascii_lowercase
小写字母
string.ascii_uppercase
大写字母
string.digits
`字符串 `0123456789`,十进制
string.hexdigits
`字符串 `0123456789abcdefABCDEF`,十六进制
string.octdigits
`字符串 `01234567`,八进制
文本序列类型
定义
在 Python 中处理文本数据是使用str对象,也称字符串
字符串是由 Unicode 码位构成的不可变序列
字面值写法
单引号: `允许包含有 "双" 引号`
双引号: `允许嵌入 '单' 引号`
三重引号: `'''三重单引号'''
Python基本语法 数据类型 列表 元组 字典
基本语法
注释
#行注释
'''
这是Python中三个单引号的块注释
"""
这是Python中三个双引号的块注释
数据类型
定义
*Python*是一门动态的*(dynamic)*且强类型*(strong)*语言。
Python中的数据类型:str/int/float/bool
# java:是一门静态的强类型语言
# javascript:是一门动态的弱类型语言,运行时识别数据类型
字符串(str)
# 单引号和双引号
temp = 'hello python'
temp = "hello python"
print(temp)
# 转义符处理
temp="I say \"hello world\""
# 通过+拼接字符串
print(temp+"...")
# 使用制表符\t和换行符\n
print("I say \thello \nworld")
整数(int)
# 加(+)减(-)乘(*)除(/)运算
例:count = 8
print(count+1)
Python面向对象 Python基础
类的定义 三大特性:封装 继承 多态