新开课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 - 终端

  1. 运行python程序: - 运算程序的计算机必须先安装python环境

win: python py文件路径
mac: python3 py文件路径

注意:windows使用python指令执行Python程序的时候必须保证写指令的位置和py文件在同一个盘下面;
如果不在同一个盘,执行指令前先切盘

  1. 进入文件夹: cd
    cd 文件夹相对路径、文件夹绝对路径

注意:如果是windows操作系统,cd操作如果要跨盘需要先切盘,然后再cd
切盘方法:C:、E:、D:

  1. 查看当前文件夹的内容
    win: dir
    Mac:ls

  2. 用指令创建虚拟环境
    第一步:找到一个用来放虚拟环境的文件夹
    第二步:通过cd指令进入到存放虚拟环境的文件夹中

    第三步:创建虚拟环境
    python -m venv 虚拟环境名
    python3 -m venv 虚拟环境名

    第四步:激活虚拟环境
    (mac) source 虚拟环境目录/bin/activate
    (windows) 虚拟环境目录\ Scripts\activate.bat

​ 第五步:退出虚拟环境(回到系统环境)
​ deactivate

  1. 常用pip指令(pip - Python包管理工具)

    pip list - 查看当前环境已经安装过的所有的第三方库

    pip install 第三方库名称 - 下载并且安装指定的第三方库

    pip install 第三方库名称 -i 镜像地址 - 在指定的镜像地址中下载安装

    pip install 第三方库名称==版本号 -i 镜像地址

    pip install 第三方库名称1 第三方库名称2

    pip freeze > 依赖文件名 - 生成依赖文件

    pip install -r 依赖文件路径 - 批量安装

    pip uninstall 第三方库名称 - 卸载指定的第三方库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值