Python提取网页信息并保存

使用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() #关闭数据库连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值