想学Python爬虫么?很简单的鸭~第四课

python爬虫

此文章大致需要观看十分钟


Python作为现阶段最流行的语言,对于网络的爬取和海量数据的分析,python更胜一筹。

Comma Separated Values,简称 CSV ,它是一种以逗号分隔数值的文件类型。在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据, CSV 文件通常以纯文本的方式存储数据表,由于爬虫的数据量高效且巨大,今天具体讲一下 Python 对 csv 格式的文件处理。


首先我们先准备一个 csv 文件,命名为 csv_test.csv 。
csv_test.csv
数据源如下:

姓名年龄电话
小P18138001380000
小Y22138001380000

1、CSV写入

import csv
# 若存在文件,打开csv文件,若不存在即新建文件
# 如不设置newline='',每行数据会隔一行空白行
csvfile = open('csv_test.csv', 'w', newline='')
# 将文件加载到csv对象中
writer = csv.writer(csvfile)
# 写入一行数据
writer.writerow(['姓名', '年龄', '电话'])
# 多行数据写入
data = [
    ('小P', '18', '138001380000'),
    ('小Y', '22', '138001380000')
]
writer.writerows(data)
# 关闭csv对象
csvfile.close()

2、csv列表字典写入

import csv
csvfile = open('csv_test.csv', 'r')
# 以列表形式输出
reader = csv.reader(csvfile)
# 以字典形式输出,第一行作为字典的键
# reader = csv.DictReader(csvfile)
rows = [row for row in reader]
print(rows)

import csv
csvfile = open('csv_test.csv', 'r')
# 以列表形式输出
reader = csv.reader(csvfile)
for row in reader:
    if '小P' in row:
        print(row)
# 以字典形式输出,第一行作为字典的键
# reader = csv.DictReader(csvfile)
# for row in reader:
#     if row['姓名']== '小P':
#         print(row)

3、xlwt控制Excel

import xlwt
# 新建一个Excel文件
wb = xlwt.Workbook()
# 新建一个Sheet
ws = wb.add_sheet('Python', cell_overwrite_ok=True)
# 定义字体对齐方式对象
alignment = xlwt.Alignment()
# 设置水平方向
# HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED
# HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# 设置垂直方向
# VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
# 定义格式对象
style = xlwt.XFStyle()
style.alignment = alignment
# 合并单元格write_merge(开始行, 结束行, 开始列, 结束列, 内容, 格式)
ws.write_merge(0, 0, 0, 5, 'Python网络爬虫', style)

# 写入数据wb.write(行,列,内容)
for i in range(2, 7):
    for k in range(5):
        ws.write(i, k, i+k)
    # Excel公式xlwt.Formula
    ws.write(i, 5, xlwt.Formula('SUM(A'+str(i+1)+':E'+str(i+1)+')'))

# 插入图片,insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1)
# 图片格式必须为bmp
# x表示行数,y表示列数
# x1表示相对原来位置向下偏移的像素
# y1表示相对原来位置向右偏移的像素
# scale_x,scale_y缩放比例
ws.insert_bitmap('E:\\test.bmp', 9, 1, 2, 2, scale_x=0.3, scale_y=0.3)

# 保存文件
wb.save('file.xls')

4、xlrd获取Excel

import xlrd
wb = xlrd.open_workbook('file.xls')
# 获取Sheets总数
ws_count = wb.nsheets
print('Sheets总数:', ws_count)
# 通过索引顺序获取Sheets
# ws = wb.sheets()[0]
# ws = wb.sheet_by_index(0)
# 通过Sheets名获取Sheets
ws = wb.sheet_by_name('Python')
# 获取整行的值(以列表返回内容)
row_value = ws.row_values(3)
print('第4行数据:', row_value)
# 获取整列的值(以列表返回内容)
row_col = ws.col_values(3)
print('D列数据:', row_col)

# 获得所有行列
nrows = ws.nrows
ncols = ws.ncols
print('总行数:', nrows, ',总列数:', ncols)

# 获取某个单元格内容cell(行, 列)
cell_F3 = ws.cell(2, 5).value
print('F3内容:', cell_F3)

# 使用行列索引获取某个单元格内容
row_F3 = ws.row(2)[5].value
col_F3 = ws.col(5)[2].value
print('F3内容:', row_F3, 'F3内容:', col_F3)

5、xlrd使用Excel

import xlrd
wb = xlrd.open_workbook('file.xls')
# 获取Sheets总数
ws_count = wb.nsheets
print('Sheets总数:', ws_count)
# 通过索引顺序获取Sheets
# ws = wb.sheets()[0]
# ws = wb.sheet_by_index(0)
# 通过Sheets名获取Sheets
ws = wb.sheet_by_name('Python')
# 获取整行的值(以列表返回内容)
row_value = ws.row_values(3)
print('第4行数据:', row_value)
# 获取整列的值(以列表返回内容)
row_col = ws.col_values(3)
print('D列数据:', row_col)

# 获得所有行列
nrows = ws.nrows
ncols = ws.ncols
print('总行数:', nrows, ',总列数:', ncols)

# 获取某个单元格内容cell(行, 列)
cell_F3 = ws.cell(2, 5).value
print('F3内容:', cell_F3)

# 使用行列索引获取某个单元格内容
row_F3 = ws.row(2)[5].value
col_F3 = ws.col(5)[2].value
print('F3内容:', row_F3, 'F3内容:', col_F3)

6、docx写Word

# 数据写入
from docx import Document
from docx.shared import Inches
# 创建对象
document = Document()
# 添加标题,其中'0'代表标题类型,共四种类型,具体可在Word的'开始'-'样式'中查看
document.add_heading('Python 爬虫', 0)
# 添加正文内容并设置部分内容格式
p = document.add_paragraph('Python 爬虫开发-')
# 设置内容加粗
p.runs[0].bold = True
# 添加内容并加粗
p.add_run('数据存储-').bold = True
# 添加内容
p.add_run('Word-')
# 添加内容并设置字体斜体
p.add_run('存储实例。').italic = True
# 添加正文,设置'样式'-'明显引用'
document.add_paragraph('样式-明显引用', style='IntenseQuote')
# 添加正文,设置'项目符号'
document.add_paragraph(
    '项目符号1', style='ListBullet'
)
document.add_paragraph(
    '项目符号2', style='ListNumber'
)
# 添加图片
document.add_picture('test.png', width=Inches(1.25))
# 添加表格
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for item in range(2):
    row_cells = table.add_row().cells
    row_cells[0].text = 'a'
    row_cells[1].text = 'b'
    row_cells[2].text = 'c'
# 保存文件
document.add_page_break()
document.save('test.docx')

7、docx数据读取

# 数据读取
import docx
def readDocx(docName):
    fullText = []
    doc = docx.Document(docName)
    # 读取全部内容
    paras = doc.paragraphs
    # 将每行数据存入列表
    for p in paras:
        fullText.append(p.text)
        # 将列表数据转换成字符串
    return '\n'.join(fullText)
print(readDocx('test.docx'))

课间休息几分钟,下课!
下节课:你不可或缺的爬虫课程哦~

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺北海以北的等待༻꧂

欢迎为萌新程序员打赏~谢谢各位

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值