这段代码的功能是爬取网页上的自我介绍内容,并将其存储到一个SQLite数据库中。

import requests
from bs4 import BeautifulSoup
import sqlite3

# 爬取网页
url = 'http://49.235.120.214/sunzhiwei/index.html'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763'
}
codes = requests.get(url, headers=headers).text

# 用BeautifulSoup解析网页并获取所有p标签的内容
soup = BeautifulSoup(codes, 'html.parser')
# 获取每个p标签中的自我介绍内容
p_tags_content = [tag.text for tag in soup.find_all('p', class_='introduction')]
print(p_tags_content)

# 创建一个自我介绍表
conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()
sql = 'CREATE TABLE introduction(id INTEGER PRIMARY KEY, name TEXT, hometown TEXT, course_recommendation TEXT)'
cursor.execute(sql)

# 将爬取到的自我介绍数据插入到表中
for index, content in enumerate(p_tags_content, start=1):
    name = content[0].strip()  # 假设自我介绍的第一行是姓名
    hometown = content[1].strip()  # 假设自我介绍的第二行是家乡介绍
    course_recommendation = content[2].strip()  # 假设自我介绍的第三行是课程建议
    sql = f'INSERT INTO introduction VALUES ({index}, '{name}', '{hometown}', '{course_recommendation}')'
    cursor.execute(sql)
conn.commit()
print(f'插入了{len(p_tags_content)}条记录')

# 重新连接到数据库
conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()

# 查询introduction表中的所有数据
cursor.execute('SELECT * FROM introduction')
rows = cursor.fetchall()

# 打印所有行
for row in rows:
    print(row)

代码解释

  1. 导入库
    • requests: 用于发送HTTP请求
    • BeautifulSoup: 用于解析HTML文档
    • sqlite3: 用于操作SQLite数据库
  2. 爬取网页
    • url: 要爬取的网页地址
    • headers: 请求头,用于模拟浏览器发送请求
    • codes: 获取网页的HTML代码
  3. 解析网页并获取数据
    • 使用BeautifulSoup解析HTML代码
    • 使用find_all方法找到所有class为'introduction'的p标签
    • 提取每个p标签的文本内容,并保存到p_tags_content列表中
  4. 创建数据库和表
    • 连接到SQLite数据库
    • 创建名为'introduction'的表,包含以下字段:
      • id: 自增主键
      • name: 姓名
      • hometown: 家乡
      • course_recommendation: 课程建议
  5. 插入数据
    • 遍历p_tags_content列表,将每个自我介绍内容插入到'introduction'表中
    • 每个自我介绍内容的第一行是姓名,第二行是家乡,第三行是课程建议
    • 使用execute方法执行SQL插入语句
    • 使用commit方法提交事务,将修改持久化到数据库中
  6. 查询数据
    • 重新连接到数据库
    • 使用execute方法执行SQL查询语句
    • 使用fetchall方法获取所有查询结果
    • 遍历所有结果,并打印每一行

运行结果

['姓名:张三
家乡:北京
课程建议:推荐学习Python和数据分析。
', '姓名:李四
家乡:上海
课程建议:推荐学习Java和Web开发。
', '姓名:王五
家乡:广州
课程建议:推荐学习C++和算法。
']
插入了3条记录
(1, '姓名:张三', '家乡:北京', '课程建议:推荐学习Python和数据分析。')
(2, '姓名:李四', '家乡:上海', '课程建议:推荐学习Java和Web开发。')
(3, '姓名:王五', '家乡:广州', '课程建议:推荐学习C++和算法。')

从运行结果可以看出,代码成功爬取了3条自我介绍内容,并将其插入到了'introduction'表中。最后通过查询操作验证了数据的插入。

注意事项

  • 确保网页的HTML结构和内容是稳定的,否则代码可能需要调整。
  • 使用requests库发送请求时,建议添加请求头,模拟浏览器发送请求,以避免被网站识别为爬虫。
  • 为了提高爬取效率,可以使用多线程或多进程进行爬取。
  • 为了防止对目标网站造成过大的压力,建议设置合理的爬取频率和延迟。
  • 在使用数据库之前,建议先备份数据,以防意外丢失。
  • 爬取网站信息时,请尊重网站的robots.txt文件和相关协议,不要对网站造成任何损害。
Python爬虫实战:使用BeautifulSoup和SQLite3提取网页信息并存储到数据库

原文地址: https://www.cveoy.top/t/topic/pdiN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录