爬虫学习-day3-csvAndBs4总结

爬虫学习-day3-csvAndBs4总结

01review

1.re模式

from re import fullmatch,findall,search,split,sub,finditer,match

2.正则语法

  1. 匹配类型

    # 普通符号、.、\d、\s、\w、\D、\S、\w、[字符集]、[^字符集]
    # *、+、?、{N}、{M,N}、{M,}、{,N}
    
  2. 分组 - ()

    # 整体操作、重复(\M)、捕获
    
  3. 分支 - |

    # 正则1|正则2
    # 5)转义符号
    
  4. 转移符号

  5. 检测类符号

    # 是在匹配成功的时候,检测所在的位置是否符合要求
    # \b    -   检测是否是单词边界(任何可以将不同单词区分的符号;空白符号、标点符号、字符串开头、字符串结尾)
    

3.csv文件

3.1 什么是csv文件:

# csv文件又叫:逗号分隔值文件,像Excel文件一样以行列的形式保存数据,保存数据的时候同一行的多列数据用逗号隔开。

3.2.csv文件的读写操作

3.2.1 csv文件读操作
from csv import reader ,DictReader
# a.reader
# 创建根据文件对象创建对应的reader,获取文件内容
with open('files/电影.csv',encoding='utf-8',newline='') as f:
    r1 =reader(f)
    print(next(r1))
    print(list(r1))
# b.DictReader
with open('files/电影.csv',encoding='utf-8',newline='') as f:
    r2 = DictReader(f)
    print(next(r2))
    for x in r2:
        print(x)
3.3 写操作
from csv import writer,DictWriter
# a.writer
with open('files/student1.csv','w',encoding='utf-8',newline='') as f:
    # 1.根据文件对象创建writer文件
    w1 = writer(f)

    # 2.写入数据
    # 1)一次写入一行
    w1.writerow(['姓名','性别','年龄'])
    w1.writerow(['小明','男',22])
    # 2)一次写多行
    w1.writerows([
        ['小红','女',12],
        ['小白','女',18]
    ])
# b.DictWriter
with open('files/student2.csv','w',encoding='utf-8',newline='') as f:
    #1.根据文件对象创建writer文件
    w2 = DictWriter(f,['姓名','性别','年龄'])

    # 2.写入数据
    # 1)将字典的键作为第一行写入
    w2.writeheader()
    w2.writerow({'姓名':'小明','性别':'男','年龄':22})
    w2. writerows( [
        {'姓名': '小花', '性别': '女', '年龄': 17},
        {'姓名': '小红', '性别': '女', '年龄': 18},
        {'姓名': '张三','性别': '男', '年龄': 30}
    ])

4.bs4

# bs4(beautifulsoup4的缩写),它是基于css选择器的网页解析器
"""
css语法:
 选择器{属性名1: 属性值2; 属性名2: 属性值2; ....}
 
 常见属性:color(设置字体颜色)、 background-color(背景颜色)、font-size(字体大小)、width(宽度)、height(高度)、border(边框)
 
 选择器:
 1. 元素选择器(标签选择器) - 将标签作为选择器,选中所有指定的标签
 a{}  -  选中所有的a标签
 p{}  -  选中所有的p标签
 span{}    -  选中所有的span标签
 
 2. id选择器   - 在标签的id属性前加#作为一个选择器,选中id属性值为指定值的标签
 注意:一个网页中id属性值是唯一的
 #a{}   - 选中id属性值为a的标签
 #b1{} -  选中id属性值为b1的标签
 
 3. class选择器   -  在标签的class属性前加.作为一个选择器,选中所有class属性值为指定值的标签
 注意:一个网页中多个标签的class属性值可以相同;同一个标签可以有多个不同的class
     只有一个class属性值标签的写法:<标签名 class="c1">
     有多个class属性值标签的写法:<标签名 class="c1 c2 c3">
     
 .a{}  -  选中class属性值为a标签
 .c1{} -  选中class属性值为c1的标签
 .a.b{}    -  选中class属性值同时为a和b标签
 a.c1{}    -  选中所有class值为c1的a标签
 
 4. 子代选择器  -  将两个选择器用>连接成一个选择器(前后形成父子关系)
 div>a{}   -  选中所有在div标签中的a标签(a标签必须是div的子标签)
 
 5. 后代选择器  -  将两个选择器用空格连接成一个选择器(前后形成后代关系)
 div a{}   -  选中所有在div标签中的a标签(a标签必须是div的后代标签)

"""
# 注意:安装的时候安装beautifulsoup4,使用的时候用bs4
from bs4 import BeautifulSoup
# 1.根据网页源代码创建soup对象:BeautifulSoup(网页源代码,'lxml')
f = open('files/data.html',encoding='utf-8')
soup = BeautifulSoup(f.read(),'lxml')
f.close()
# 2.获取标签
# soup对象.select(css选择器) -   获取整个网页中选择器选中的所有标签,返回值是一个列表,列表中的元素是标签对象
# soup对象.select_one(css选择器) -   获取整个网页中选择器选中的第一个标签,返回值是标签对象(找不到返回None)
# 标签对象.select(css选择器)   -   获取指定标签中css选择器选中的所有标签
# 标签对象.select_one(css选择器)   -   获取指定标签中css选择器选中的第一个标签
# 3.获取标签内容和标签属性
# 标签对象.text -   获取标签内容
# 标签对象.attrs[属性名]   -   获取标签指定属性的值
print(p1.text)  #我是段落5
print(a1.text)  # 我是超链接3
print(a1.attrs['href']) # https://www.baidu.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值