bs4解析数据和csv文件

\b 检测所在的位置是否是单词边界(任何可以将不同的单词进行区分的符号:空白符号,标点符号,字符串开头,字符串结尾)

^ 检测是否是字符串开头

$ 检测是否是字符串结尾

csv保存数据

  1. 什么是csv文件

  2. 读操作

    1. reader
    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))
    
    1. Dictreader
    # 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. 写操作

    1. writer
    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([
            ('小花', '女', 18),
            ['张三', '男', 30]
        ])
    
    
    1. Dictwriter
    # 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}
        ])
    
    
    

bs4

  1. css选择器
# 元素选择器:定位特定类型的所有元素。例如,h1 定位页面上的所有 h1 元素。
h1 {
  /* 样式 */
}
# 类选择器:定位所有具有特定类的元素。例如,.my-class 定位所有具有类 my-class 的元素。
.my-class {
  /* 样式 */
}
# ID 选择器:定位具有特定 ID 的单个元素。例如,#my-id 定位具有 ID my-id 的元素。
#my-id {
  /* 样式 */
}
# 属性选择器:定位具有特定属性的元素。例如,[type="text"] 定位所有具有属性 type 设置为 text 的元素。
[type="text"] {
  /* 样式 */
}

  1. CSS 父子选择器用于定位特定 HTML 元素的子元素并对其应用样式。以下是一些常见的 CSS 父子选择器:
div p {
  /* 样式 */
}
子元素选择器:定位特定元素的直接子元素。例如,ul > li 定位所有 ul 元素的直接子元素 li 元素。
ul > li {
  /* 样式 */
}
相邻兄弟选择器:定位特定元素的下一个兄弟元素。例如,h1 + p 定位紧接在 h1 元素后的第一个 p 元素
h1 + p {
  /* 样式 */
}
通用兄弟选择器:定位特定元素之后的所有兄弟元素。例如,h1 ~ p 定位所有在 h1 元素之后的 p 元素。
h1 ~ p {
  /* 样式 */
}
你还可以组合父子选择器以定位特定元素的子元素。例如,div > p.my-class 定位所有 div 元素的直接子元素 p 元素,并且该元素具有类 my-class。

bs4语法

BeautifulSoup 是一个 Python 库,用于从 HTML 或 XML 文件中提取数据。它可以帮助你解析 HTML 或 XML 文件,并从中提取所需的数据

from bs4 import BeautifulSoup

# 将 HTML 文件加载到 BeautifulSoup 中
with open("index.html") as fp:
    soup = BeautifulSoup(fp, "html.parser")

# 查找所有带有 class="my-class" 的 div 元素
divs = soup.find_all("div", class_="my-class")

# 打印每个 div 元素的文本内容
for div in divs:
    print(div.text)

    
    
    
from bs4 import BeautifulSoup

# 将 HTML 文件加载到 BeautifulSoup 中
with open("index.html") as fp:
    soup = BeautifulSoup(fp, "html.parser")

# 使用 select 方法查找所有带有 class="my-class" 的 div 元素
divs = soup.select("div.my-class")

# 打印每个 div 元素的文本内容
for div in divs:
    print(div.text)
  
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选择器选中的第一个标签
result = soup.select('p')
print(result)

# result = soup.select('.c1')
# print(result)
#
# result = soup.select_one('p')
# print(result)
#
# result = soup.select('div p')
# print(result)

box1 = soup.select_one('#box1')
result = box1.select('p')
print(result)

p1 = soup.select_one('span>p')
a1 = box1.select_one('a')

# 3. 获取标签内容和标签属性
# 标签对象.text     -   获取标签内容
# 标签对象.attrs[属性名]   -   获取标签指定属性的值

print(p1.text)      # '我是段落5'
print(a1.text)      # '我是超链接3'
print(a1.attrs['href'])     # 'https://www.baidu.com'

你可能感兴趣的:(python,数据分析,numpy)