Python提取网页信息并保存

2023-11-18

使用Python爬取网页内容时,获取网页源码文件后使用一系列解析方法提取我们需要的信息,对于提取到的信息怎么保存下来,本文提供常见的两种方法:保存到本地文件或MySQL数据库。

保存到本地csv文件

将数据以一定的格式保存到本地csv文件需要用到Python的csv模块,首先使用open函数打开一个文件对象,实例化一个writer类进而支持单行写入或多行写入(多行写入时将数据构造为统一格式:列表套元组 [(xx,xx,…),(xx,xx,…),…]
以正则表达式匹配结果为例:

import re
import csv

pattern = re.compile('正则表达式',re.S) #对正则表达式进行编译,并且re.S设置.包括换行符在内的所有字符
r_list = pattern.findall(html) #匹配整个html字符串,返回的是一个列表,但是如果正则表达式有()对匹配的内容进行保存,则返回的列表中套着一个个元组
info_list = [] #构建一个空列表处理数据
for rt in r_list:
	t= (rt[0].strip(),rt[1].strip(),...) #将元组中字符串左右空格删除
	info_list.append(t) #info_list的格式最终:[(xx,xx,..),(xx,xx,..),..]

#保存数据到csv文件
#以追加形式打开文件,newline=''避免出现空行现象
with open('info.csv','a',encoding='utf-8',newline='') as f:
	writer = csv.writer(f)
	writer.writerow(['xx','xx',...]) #单行写入,以列表形式传入,一般写入表头
	writer.writerows(info_list) #多行写入

保存到MySQL数据库

数据保存到MySQL数据库需要构建数据库连接,并且将数据整理为一定格式:列表套列表 [[xx,xx,…],[xx,xx,…],…] 或 列表套元组[(xx,xx,…),(xx,xx,…),…]
以正则表达式匹配结果为例:

import re
import pymysql

pattern = re.compile('正则表达式',re.S) 
r_list = pattern.findall(html) #返回的列表中套着一个个元组
info_list = [] #构建一个空列表处理数据
for rt in r_list:
	t= [rt[0].strip(),rt[1].strip(),...] #将元组中字符串左右空格删除
	info_list.append(t) #info_list的格式最终:[[xx,xx,..],[xx,xx,..],..]

#保存数据到MySQL数据库
db = pymysql.connect(host = 'localhost', #主机地址
					 port = 3306, #端口号
					 user = 'root', #用户名
					 passwd = '密码', #密码
					 database = 'dbname', #数据库名
					 charset = 'utf8')
cursor = db.cursor() #构建游标对象

cursor.execute('insert into tableName values ('xx','xx',...) #execute插入一条数据

#executemany插入多条记录
ins = '''insert into tableName values(%s,%s,%s,...)'''
cursor.executemany(ins,info_list)
db.commit()
cursor.close() #关闭游标对象
db.close() #关闭数据库连接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python提取网页信息并保存 的相关文章

  • Python RAD(桌面部署)[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果这个问题回答了这么多次 请原谅我
  • Redis - 错误:值不是有效的浮点数

    我在 Redis 中有一个排序集 我试图通过在Python代码中使用zincrby来更新特定元素的计数器值 例如 conn zincrby usersSet float 1 user1 但它显示错误为 错误 值不是有效的浮点数 我在 cli
  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • Python - 定义常量列表或字典的最佳/最简洁的方法

    第一次使用堆栈溢出 我很高兴来到这里 简介 我最近开始了 Python 编程世界的神奇冒险 我喜欢它 现在 在我从 C 语言的尴尬过渡中 一切都进展顺利 但我在创建与标头文件 h 同义的内容时遇到了麻烦 问题 我有中等大小的字典和列表 大约
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • SQLAlchemy 默认日期时间

    这是我的声明模型 import datetime from sqlalchemy import Column Integer DateTime from sqlalchemy ext declarative import declarati
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • 计算二维笛卡尔坐标中不规则形状的边界

    我正在寻找一种计算不规则形状边界的解决方案 Lats take a look at Square example 如果我有Minimum x and y and Maximum x and y like MaxX 5 MinX 1 MaxY
  • 如何使用JQuery和Django(ajax + HttpResponse)?

    假设我有一个 AJAX 函数 function callpage ajax method get url abc data x 3 beforeSend function success function html IF HTTPRESPO
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • Python写入dbf数据时出错

    我得到这个错误 DbfError unable to modify fields individually except in with or Process 如何修复它 这是我的code with dbf Table aa dbf as
  • Flask APScheduler + Gunicorn 工作人员 - 在套接字修复后仍在运行任务两次

    我有一个 Flask 应用程序 我使用 Flask APScheduler 在我的数据库上运行计划查询并通过 cron 作业发送电子邮件 我通过 Gunicorn 使用以下配置运行我的应用程序并通过主管进行控制 program myapp
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • Tensorboard——High-level节点的计算时间与其子节点计算时间的总和不同

    继tutorial https www tensorflow org programmers guide graph viz在 TensorFlow 上 我试图使用张量板来理解运行时统计数据 我发现代表名称范围的高级节点的计算时间不等于其子
  • 磁盘寻道时间测量方法

    我编写了一个脚本来测量 HDD 上的寻道时间 并且其完成方式的微小变化会导致显着不同的时间 第一个周期在磁盘开头的区域内进行跳转 第二个周期选择磁盘上执行查找的随机区域 相同大小 这种方法显然不同 但我不明白为什么它会改变结果 请注意 对于
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐

  • 【ctrl+space】键位解除占用+永久删除微软拼音输入法

    前言 多数编程软件的代码提示快捷键一般为 ctrl space 但win10默认切换输入法中英文模式快捷键也是 ctrl space 即使更改输入法热键和注册表也依然无效 只能更换输入法 发现更换为搜狗输入法后 ctrl space 热键被
  • 2023华为OD机试真题【文件目录大小】

    题目内容 一个文件目录的数据格式为 目录id 本目录中文件大小 子目录id列表 其中目录id全局唯一 取值范围 1 200 本目录中文件大小范围 1 1000 子目录id列表个数 0 10 例如 1 20 2 3 表示目录1中文件总大小是2
  • python apply函数的用法

    函数格式为 apply func args kwargs 用途 当一个函数的参数存在于一个元组或者一个字典中时 用来间接的调用这个函数 并肩元组或者字典中的参数按照顺序传递给参数 解析 args是一个包含按照函数所需参数传递的位置参数的一个
  • 2022年深圳杯A题破除“尖叫效应”与“回声室效应”走出“信息茧房”

    2022年深圳杯A题破除 尖叫效应 与 回声室效应 走出 信息茧房 为了防止更多的人走弯路 对于此题 数据随便找 数据自己造然后文档写的时候数据来源说数据爬取这样不就ok了 题里不是还写着了么 等社交媒体的数据 你考虑过么 你在写文档的时候
  • 一个或多个问题导致了安装失败。请修复这些问题,然后重试安装。有关详细信 息,请参阅日志这生。 0x80070666-已安装这个产品的另一个版本。这个版本的安装无法继续。要配 置或删除这个产品的现有版本

    目录 编辑 一个或多个问题导致了安装失败 请修复这些问题 然后重试安装 有关详细信 息 请参阅日志这生 0x80070666 已安装这个产品的另一个版本 这个版本的安装无法继续 要配 置或删除这个产品的现有版本 请用 控制面板 上的 添加删
  • [C++] IO流,文件输入输出,string流,类型转换运算符

    文章目录 类型转换运算符 循环输入原理 文件输入输出 简介 文件模式 二进制读写与文本文件读写 string 流 istringstream 使用 ostringstream 使用 类型转换运算符 循环输入原理 循环输入 有些oj题会要求我
  • OpenCV——图像分块(1)

    目录 一 概述 二 代码实现 三 结果展示 1 原始图像 2 分块结果 一 概述 已知分块后图像的分块个数 对图像进行分块 二 代码实现 include
  • list的模拟实现

    list的模拟实现 1 创建 链表结点 2 创建 链表迭代器 3 创建 链表 4 测试 模拟实现的list的功能 1 创建 链表结点 namespace JPC 创建 链表结点 template
  • 全国首批城市级5G车联网应用项目落地!

    司机变身 安全员 公交车自主选择车道 避让障碍物和行人 还能接收交通信号灯信息 实现一路畅行 近日 央视综合频道 报道了 聪明车 开上 智慧路 的黑科技 日前 依托苏州良好的车联网产业环境 全国首批城市级5G车联网应用项目落地苏州 中国移动
  • 改善java程序的151个建议 - 读书笔记

    目录 第1章 java开发中通用的方法和准则 1 字母 l 和数字1 字母 o 和数字0易混淆 3 三元操作符的类型务必一致 7 警惕自增陷阱 11 好习惯是显示声明UID 12 Serializable类中的final成员变量的赋值 14
  • 基于开源大模型Vicuna-13B构建私有制库问答系统

    本教程专注在怎么使用已经开源的模型和项目 构建一个可以私有化部署的问答知识库 而且整体效果要有所保障 主要工作包括 选择基础模型 openAI claude 这些商用的 或者其他的开源的 这次我们选择 Vicuna 13B 开源有很多的知识
  • 如何把极坐标化为直角坐标_如何将极坐标转化为直角坐标

    展开全部 极坐标转换为直角坐标 32313133353236313431303231363533e58685e5aeb931333366306532 转化方法及其步骤 第一步 把极坐标方程中的 整理成cos 和sin 的形式 第二步 把co
  • 基础15:npm、yarn、pnpm

    npm2 用 node 版本管理工具把 node 版本降到 4 那 npm 版本就是 2 x 了 执行 npm init npm install express 可以看到node modules目录如下 可以看到 npm2的node mod
  • 深入理解计算机系统(2.3)---整数的表示方式精解》无符号与补码编码(重要)...

    上一章我们简单的介绍了布尔代数以及C语言的位运算 本次我们主要来看 二进制如何表示整数 这是很重要的一章 希望各位猿友莫要错过 C语言中的整数类型及范围 我们依然以C语言为例 C语言当中提供了多种整数类型 一共十种 位数为1 2 4 8 其
  • ShellExecuteEx中与被调进程同步

    在实际的开发中会遇到这样的情况 A进程在运行时 需要调起B进程完成某些工作 例如取回关键文件 且必须等待该进程完成工作结束后才能往下继续 那么这时候 就可以采用ShellExecuteEx和WaitForSingleObject的结合对被调
  • 新媒体运营怎么追热点?这四个技巧一定可以帮到你

    作为一个新媒体运营 热点追不好 冷板凳少不了 热点追得好不但能带来账号的曝光 还能带来良好的涨粉效果 但是很多人都不知道热点到底要怎么追 那么今天就给大家分享一下 追热点4个百试不爽的套路 01 怎样找热点 热点可以分为常规型热点和突发型热
  • R语言——数据排序

    R语言中涉及排序的基本函数有order sort和rank三个 下面看看它们的基本用法 x表示需要排序的数据 decreasing表示是否按降序排序数据 method表示所使用的排序算法 na last表示如何处理NA值 缺失值 若为FAL
  • eclipse中导入idea项目的基本步骤

    eclipse导入idea项目 前段时间有个idea项目 SSM maven 需要导入eclispe运行 最后搞了很久才运行成功 这里整理一下导入项目时需要修改一些配置 第一步 import时建议选择导入Maven项目 选择Maven下的导
  • 在Centos7中搭建http服务器

    一 简介 二 安装 二 编辑配置文件 三 配置主页文件 或者将做好的网站放入根目录 四 配置安全访问规则 五 启动http服务 六 访问测试 七 心得体会 一 简介 Centos7默认的http服务器为Apache Apache HTTP
  • Python提取网页信息并保存

    使用Python爬取网页内容时 获取网页源码文件后使用一系列解析方法提取我们需要的信息 对于提取到的信息怎么保存下来 本文提供常见的两种方法 保存到本地文件或MySQL数据库 保存到本地csv文件 将数据以一定的格式保存到本地csv文件需要