day17-bs4解析器和csv文件操作

day17-bs4解析器和csv文件操作

  • day17-bs4解析器和csv文件操作
    • 1.csv文件操作
      • 1.文件写操作
      • 2.文件读操作
    • 2.html和css选择器
      • 1.前端开发三大技术
      • 2.html
    • 3.css选择器
      • 1.元素选择器(又叫标签选择器)
      • 2.class选择器
      • 3.id选择器
      • 4.子代选择器
      • 5.后代选择器
    • 4.bs4数据解析
      • 1.得到网页源代码
      • 2.创建soup对象
      • 3.获取标签

1.csv文件操作

1.文件写操作

1.创建writer对象

csv.writer(csv文件对象) - (写入数据的时候一行内容对应一个列表)

csv.DictWriter(csv文件对象, 字段名列表) - (写入数据的时候一行内容对应一个字典)

# 1)使用writer
f1 = open('files/data1.csv', 'w', encoding='utf-8', newline='')
w1 = csv.writer(f1)

# 2)使用DictWriter
f2 = open('files/data2.csv', 'w', encoding='utf-8', newline='')
w2 = csv.DictWriter(f2, ['姓名', '年龄', '分数'])

2.写入数据

writer写入数据

writer对象.writerow(一行数据)

writer对象.writerows(多行数据)

w1.writerow(['姓名', '年龄', '分数'])
w1.writerow(['小明', 18, 90])
w1.writerows([
    ['小花', 20, 88],
    ['张三', 30, 95],
    ['李四', 25, 70]
])

DictWriter写入数据

# 将字段作为第一行内容
w2.writeheader()
w2.writerow({'姓名': '小明', '年龄': 18, '分数': 90})
w2.writerow({'姓名': '小花', '年龄': 20, '分数': 88})
w2.writerows([
    {'姓名': '张三', '年龄': 30, '分数': 95},
    {'姓名': '李四', '年龄': 25, '分数': 70}
])

2.文件读操作

1.创建reader

csv.reader(csv文件对象) - 每一行对应一个列表获取数据

csv.DictReader(csv文件对象) - 每一行对应一个字典获取数据

f1 = open('files/租房信息.csv', 'r', encoding='utf-8')
r1 = csv.reader(f1)
f2 = open('files/租房信息.csv', 'r', encoding='utf-8')
r2 = csv.DictReader(f2)
print(next(r1))
print(list(r1))
print(next(r2))
a = list(r2)
for x in a:
    print(x)

2.html和css选择器

1.前端开发三大技术

a.html - 负责给网页提供内容(通过各种各样的标签来给网页提供各种各样的内容)

b.css - 负责网页内容的变化和样式

c.js - 负责网页内容变化

2.html

"""
一个网页对应一个html文件,html文件内容就可以构建一个网页
html为网页提供基本内容的基本单位是标签
a.标签(元素)语法:
双标签:<标签名 属性名1=属性值1 属性名2=属性值2...>标签内容
b.常见标签
标题标签:h1~h6
段落标志:p
图片:img
超链接:a
"""

3.css选择器

1.元素选择器(又叫标签选择器)

直接将标签名作为选择器,选择网页中所有的指定标签

​ a{} - 选中所有的a标签

​ b{} - 选中所有的b标签

2.class选择器

​ a.在标签的class属性前加.作为一个选择器,选中class属性值为指定值的所有标签

​ .c1{} - 选中所有class属性值为c1的标签

​ .person{} - 选中所有class属性值为person的标签

​ b.将’标签名.class属性值’结构作为一个选择器,选中所有标签名为指定标签,且class属性值是指定值的标签

​ c.将’.class属性值1.class属性值2.class属性值3…'结构作为一个选择器,选择class属性同时为指定值的标签

3.id选择器

在id属性值前面加#作为一个选择器,选中id属性值为指定值的标签(id属性值是唯一的)
#p1{} - 选中id属性为p1的标签

4.子代选择器

将多个独立的选择器用>连接作为一个选择器
div>.c1{} - 选中div子标签中所有class值为c1的标签

5.后代选择器

将多个独立的选择器用空格隔开作为一个选择器

4.bs4数据解析

1.得到网页源代码

2.创建soup对象

BeautifulSoup(网页源代码, ‘lxml’) - 根据指定的网页源代码创建soup对象并且返回(soup对象就相当于整个网页)

3.获取标签

1.使用soup获取标签

soup对象.select(css选择器) - 获取css选择器选中的所有标签,返回一个列表,列表中的元素是被选中的所有标签对象

soup对象.select_one(css选择器) - 获取css选择器选中的第一个标签,返回一个标签对象

2.使用标签获取标签对象

标签对象.select(css选择器) - 获取指定标签中选择器选中的所有标签
标签对象.select_one(css选择器) - 获取指定标签中选择器选中的第一个标签

3.获取标签内容和标签属性

a.获取标签内容:标签对象.text

b.获取标签属性:标签对象.attrs[属性名]

你可能感兴趣的:(python,开发语言)