新开课day21+day22总结
模拟登录
以网页抖音登录为例:
1.获取cookies
from selenium.webdriver import Chrome
a = Chrome()
a.get('https://www.douyin.com/')input('拖延时间登录,完成直接回车:')cook = a.get_cookies()
with open('./file/douyin.txt','w',encoding='utf-8') as f:f.write(str(cook))
2.使用cookies的txt文件,完成登录
from time import sleep
# 添加cookie完成登录
from selenium.webdriver import Chrome
a = Chrome()
a.get('https://www.douyin.com/')
with open('./file/douyin.txt','r',encoding='utf-8') as f:cook = eval(f.read())for i in cook:a.add_cookie(i)
a.get('https://www.douyin.com/')
sleep(5)
a.close()
# 抖音登录完毕
day22
Lxml是Python基于xpath做数据解析的工具
1.什么xpath:通过提供标签路径来获取标签(xpath指的就是标签的路径)
(1)基本概念
- 树:整个html内容或者整个xmL内容
- 节点:树结构中的每个标签(元素)就是一个节点
- 树节点:树结构中的第一个节点就是根节点(网页对应树的根节点是html标签)
- 节点内容:双标签的标签内容
- 节点属性:标签的标签属性
(2)路径:目标节点在整个树中的位置信息
- 绝对路径:以’/'开头,不管xpath前面的节点是什么,都从根节点写起。
- 相对路径
- 全路径
创建xml文件data.xml:
<supermarket><name>永辉超市</name><staffs><staff><name>张三</name><position>收营员</position><salary>3500</salary></staff><staff><name>小明</name><position>收营员</position><salary>3800</salary></staff><staff><name>小花</name><position>导购</position><salary>4500</salary></staff></staffs><goodsList><goods><name>面包</name><price>5.5</price><count>12</count></goods><goods tag="hot"><name>泡面</name><price>3.5</price><count>59</count></goods><goods tag="discount"><name>火腿肠</name><price>1.5</price><count>30</count></goods><goods tag="hot"><name>矿泉水</name><price>2</price><count>210</count></goods></goodsList></supermarket>
创建树:
with open('data.xml','r',encoding='utf-8') as f:trees = f.read()
# print(trees)
tree = etree.XML(trees)
使用绝对路径获取物品的价格
goods_price0 = tree.xpath('/supermarket/goodsList/goods/price')
goods_price1 = tree.xpath('/supermarket/goodsList/goods/price/text()')print([price.text for price in goods_price0]) #['5.5', '3.5', '1.5', '2']
print(goods_price1) #['5.5', '3.5', '1.5', '2']
使用相对路径获取员工姓名,
相对路径中./可以省略
staffname = tree.xpath('./staffs/staff/name/text()')
print(staffname)#['张三', '小明', '小花']#方法2
staff = tree.xpath('/supermarket/staffs')
staffname1 = staff[0].xpath('./staff/name/text()')
print(staffname1)#['张三', '小明', '小花']
//路径:从全局任意节点查找
name1 = tree.xpath('name/text()')
print(name1)#['永辉超市']
name2 = tree.xpath('//name/text()')
print(name2)#['永辉超市', '张三', '小明', '小花', '面包', '泡面', '火腿肠', '矿泉水']
2.xml数据格式
xmL和json都是通用的数据,可以用于不同编程语言的程序之间进行数据交流
json:更小更快,xml:更安全
<supermarket><name>永辉超市</name><address>肖家河大厦</address><goodsList><goods name="泡面" price="3.5" count="20"></goods><goods name="矿泉水" price="2" count="50"></goods><goods name="面包" price="5" count="15"></goods></goodsList><worker_list><cashier name="张三" pay="4000"></cashier><shoppingGuide name="李四" pay="3500"></shoppingGuide></worker_list><goods price="50" count="15"><name>烟</name></goods>
</supermarket>
3.xpath的谓语(条件)
1)和位置相关条件
name = tree.xpath('//staffs/staff[2]/name/text()')
print(name)#['小明']
获取最后一个员工
name = tree.xpath('//staffs/staff[last()]/name/text()')
print(name)#['小花']
获取倒数第二个员工
name = tree.xpath('//staffs/staff[last()-1]/name/text()')
print(name)#['小明']
获取位置大于1的所有员工名字
name = tree.xpath('//staffs/staff[position()>1]/name/text()')
print(name)#['小明', '小花']
2)和属性相关条件
@属性名 = 值:获取指定属性为指定值的标签
取带有tag属性对应的商品名称
goods = tree.xpath('//goodsList/goods[@tag="hot"]/name/text()')
print(goods)#['泡面', '矿泉水']
3)和子标签内容相关条件
[子标签 = 值] : 获取指定子标签的标签内容为指定值的标签
[子标签名>值] :获取指定子标签的标签内容大于指定值的标签
案例:获取物品价格>3的物品名称
goods = tree.xpath('//goodsList/goods[price>3]/name/text()')
print(goods)# ['面包', '泡面']
案例:获取物品价格>3的物品名称
goods = tree.xpath('//goodsList/goods[count>50]/name/text()')
print(goods)# ['泡面', '矿泉水']
4.获取标签内容和标签属性
获取标签内容:获取标签的路径/text():获取路径选中的所有的标签的标签内容
获取标签内容:获取标签的路径/@属性:获取路径选中的所有的标签的指定属性的值
案例:获取goods的tag属性的值
goods = tree.xpath('//goodsList/goods/@tag')
print(goods)#['hot', 'discount', 'hot']
5.通配符*
在xpath路径中可以用*号来代替任何标签任何属性
案例:获取任何name的内容
result = tree.xpath('//*/name/text()')
print(result)
# ['永辉超市', '张三', '小明', '小花', '面包', '泡面', '火腿肠', '矿泉水']
案例:获取goods下的所有标签内容
result = tree.xpath('//goods/*/text()')
print(result)
# ['面包', '5.5', '12', '泡面', '3.5', '59', '火腿肠', '1.5', '30', '矿泉水', '2', '210']
6.若干分支(|)
使用|如果二者都存在,则都取出来
re = tree.xpath('//goods[1]/name/text()|//goods[2]/name/text()')
print(re)#['面包', '泡面']
执行Python程序的指令
前提:电脑装了python环境,python py 文件路径
常见的指令操作
执行指令的工具: Windows - 命令提示符(cmd) 、Mac - 终端
- 运行python程序: - 运算程序的计算机必须先安装python环境
win: python py文件路径
mac: python3 py文件路径
注意:windows使用python指令执行Python程序的时候必须保证写指令的位置和py文件在同一个盘下面;
如果不在同一个盘,执行指令前先切盘
- 进入文件夹: cd
cd 文件夹相对路径、文件夹绝对路径
注意:如果是windows操作系统,cd操作如果要跨盘需要先切盘,然后再cd
切盘方法:C:、E:、D:
查看当前文件夹的内容
win: dir
Mac:ls用指令创建虚拟环境
第一步:找到一个用来放虚拟环境的文件夹
第二步:通过cd指令进入到存放虚拟环境的文件夹中第三步:创建虚拟环境
python -m venv 虚拟环境名
python3 -m venv 虚拟环境名第四步:激活虚拟环境
(mac) source 虚拟环境目录/bin/activate
(windows) 虚拟环境目录\ Scripts\activate.bat
第五步:退出虚拟环境(回到系统环境)
deactivate
常用pip指令(pip - Python包管理工具)
pip list - 查看当前环境已经安装过的所有的第三方库
pip install 第三方库名称 - 下载并且安装指定的第三方库
pip install 第三方库名称 -i 镜像地址 - 在指定的镜像地址中下载安装
pip install 第三方库名称==版本号 -i 镜像地址
pip install 第三方库名称1 第三方库名称2
pip freeze > 依赖文件名 - 生成依赖文件
pip install -r 依赖文件路径 - 批量安装
pip uninstall 第三方库名称 - 卸载指定的第三方库
新开课day21+day22总结相关推荐
- 新开课day20总结
selenium 在进行selenium爬取之前需要有一些准备工作,即装selenium包和下载chomedriver 这里为主要写命令装指定版本的selenium包,在terminal中如下操作: ...
- 开启我移动开发的“新”方向
近日做了一个新的十年规划--将我教学的方向转到应用开发上来.学院组织排下学期的课,主动接下了"手机应用开发"课程. 这个决定背后有来自工作方面的需求.我所在的学校定位是培养应用型人 ...
- 脚踏实地,自强不息——清华大学大数据软件团队2021年度先进个人风采展示
清华大学大数据软件团队为充分调动员工积极性和创造性,提升团队综合水平和综合竞争力,组织开展了2021年度"优秀员工"评选工作,团队从组织管理能力.工作完成效力.工作创新能力等方面进 ...
- 2020秋季学期教学委员会第一次全体会议
➤ 01会议简介 时间:2020.10.21 11:30-15:00 地点:中央主楼803 参会人员: 教学委员会委员:赵千川,陈峰,石宗英,张佐,师丽,叶朝辉,刘连臣,任艳频,李力,赵虹,耿华,索津 ...
- 计算机科学与技术 课表 武汉,欢迎访问武汉理工大学计算机科学与技术学院
为进一步加强和推进课程建设,保障课程审核顺利进行,根据<武汉理工大学关于加强课程建设的意见>有关精神,结合计算机科学与技术学院的学科特点,特制定本课程审核实施方案. 计算机科学与技术学院于 ...
- 上计算机课怎么备课,如何备课写教案
如何备课写教案 导语:如何备课写教案?在传统的教学中花费大量的精力和时间讲解说明也难以达到良好的效果,而用现代教育技术中的多媒体手段教学,集声像字画动态显示,形象生动,让学生亲临其境,激发学生的想象力 ...
- C# 连接数据库,查询数据
//获取数据 private void GetData() {//查询条件int day11,day12,day21,day22,month;day11 = 61; day12 = 90; //时间段 ...
- 北航 2018计算机学院排课,关于2018—2019学年秋季学期排课的通知
关于2018-2019学年秋季学期排课的通知 2018-04-12 关于2018-2019学年秋季学期排课的通知 一.根据校办[2010]7号文件"关于调整校本部教学作息时间的通知" ...
- mooc成都工业学院C语言测试,成都工业学院通识公共选修课管理暂行规定
通识公共选修课是指学生可跨学科.跨专业选择修读的全校性选修课程,主要包括:人文社会科学类.体育艺术类.经济管理类.工程技术类.自然科学类等系列课程(以下简称"公选课"). 为进一步 ...
最新文章
- 23.C++类对象的指针为空时,调用成员函数不会挂掉
- ajax核心代码提交,ajax表单在Asp.net核心提交后的RedirectToAction
- java break在switch_java中switch case语句需要加入break的原因解析
- bring your mac everywhere you go
- Hive架构及安装部署(远程数据库模式MySQL)
- aix服务器屏幕显示被锁住了,AIX恢复密码过程总结
- 解决IE6、IE7、Firefox兼容最简单的CSS Hack
- bash type php,Linux Bash Shell 寻找PHP(网站)挂马,后门
- 只需两步手把手教你玩转图像识别
- MATLAB学习笔记(十三)
- utilities(matlab)—— minFunc
- statfs函数获取大容量磁盘信息速度慢的解决过程
- PyTorch学习—2.张量的创建与张量的操作
- 比中年危机更可怕的,是“下半生危机”
- struts2 拦截器
- rviz中显示Marker标记
- html5 生日贺卡在线制作软件,可在线制作或打印的个性化照片贺卡
- 数据是怎么在mysql中存储_数据是如何存入数据库中的
- 如何实现算法中的公平性
- Langevin dynamic 和 Hamiltonian Monte Carlo