【爬虫】csv文件写入和读取

文章目录

前言大纲:

1、目的:爬取标题

2、代码如下 

 3、写入txt文本

 4、csv模块

       1、csv写入

    1)csv 写入列表

    2)写入字典

        2、csv读取

5、将标题写入csv文件:

总结

本文以一个爬虫小案例讲述怎么把爬取到的文本内容写入本地

有以下几种常用的方式:

1、写入txt文本

2、写入csv文件

3、写入sql(将在下篇博客讲述)

介绍了csv 模块


 

前言大纲:

通过一个爬虫小案例:爬取文章标题讲述怎么写入csv文件

 

1、目的:爬取标题

    虎扑 获取主页标题   url = 'https://bbs.hupu.com/'
 

b0240d6c913744dbbc80fb952c06e123.jpeg

通过审查元素F12 我们可以知道标题都在

span标签下的class="t-title"下

c104cb4cbb6646728217dba6cb30ebf3.png

2、代码如下 

# -*- coding: utf-8 -*-
"""
@File  : _thread多线程.py
@author: FxDr
@Time  : 2022/10/16 19:43
"""

from bs4 import BeautifulSoup
import requests


def hupu():
    li = []
    # 虎扑 获取主页标题
    url = 'https://bbs.hupu.com/'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42'
    }
    req = requests.get(url, headers=headers).content.decode('utf-8')
    soup = BeautifulSoup(req, 'lxml')
    # print(soup.prettify()) 美化输出
    p = soup.find_all('span', class_='t-title')

    for each in p:
        # print(each.text)
        li1 = [each.text]
        li.append(li1)
    return li


print(hupu())

 输出:abc9a7b5fec54453bb1acb0d59097b0e.png

 3、写入txt文本

# -*- coding: utf-8 -*-
"""
@File  : threading多线程.py
@author: FxDr
@Time  : 2022/10/16 20:01
"""

from bs4 import BeautifulSoup
import requests


def hupuDown():
    # 虎扑 获取主页标题
    url = 'https://bbs.hupu.com/history/'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42'
    }
    req = requests.get(url, headers=headers).content.decode('utf-8')
    soup = BeautifulSoup(req, 'lxml')
    # print(soup.prettify())
    p = soup.find_all('a', class_='p-title')
    # print(p)
    for each in p:
        print(each.text)
        with open('虎扑.txt', 'a+') as f:
            f.writelines(each.text)
            f.writelines('\n')

如下:

06cdeabe2ffe4783b2754260787af4a5.png

 4、csv模块

推荐:Python CSV模块_Harris-H的博客-CSDN博客_python的csv模块

import csv

1、csv写入

1)csv 写入列表

一个小例子:

  •    writerow():单行写入,将一个列表全部写入csv的同一行
  •     writerows():多行写入,将一个二维列表的每一个列表写为一行
#  将数据写入csv文件  可以写入列表,再用writerow()方法把一个列表写入
import csv

output = [12,'重生之鸡哥在世', '1000']
with open('fxx_books.csv', 'a+', encoding='utf-8') as f:
    w = csv.writer(f)
    w.writerow(output)

输出如下:

a66e672075be42f9aac66398bfbf8eb6.png

2)写入字典

# -*- coding: utf-8 -*-
"""
@File  : 02.py
@author: FxDr
@Time  : 2022/11/01 20:05
"""
import csv
# 写入字典
# 数据
person = [
    {'name': 'Eric', 'age': 18, 'score': 99},
    {'name': 'LiHua', 'age': 18, 'score': 66},
    {'name': 'niCai', 'age': 17, 'score': 100},
]
# 表头
header = ['name', 'age', 'score']

with open('fxx_students.csv', 'w', encoding='utf-8', newline='') as f:
    # 1.创建对象
    dictWriter = csv.DictWriter(f, header)
    # 2.写入表头
    dictWriter.writeheader()
    # 3.写入数据 writerows
    dictWriter.writerows(person)

e43b88a06fe54b64b511cbc5ee0ca660.png

 

 2、csv读取

import csv
# 读取csv文件
with open('fxx_books.csv', 'r', encoding='utf-8') as f:
    csv_reader = csv.reader(f)
    for row in csv_reader:
        print(row)    # csv_reader把每一行转化为一个列表
        # print(row[0])  #  列表的第一项

输出:

6351f909b7e24f6e9490b5c33f4018e8.png

5、将标题写入csv文件:

代码如下:

# -*- coding: utf-8 -*-
"""
@File  : Down.py
@author: FxDr
@Time  : 2022/11/01 19:42
"""
from spider.hupu import Down

#  将数据写入csv文件  可以写入列表,再用writerow()方法把一个列表写入
import csv

output = Down.hupu()
print(type(output))
with open('fxx_hupu.csv', 'a+', encoding='utf-8') as f:
    w = csv.writer(f)
    '''
    for each in output:
        w.writerow(each)
        '''
    w.writerows(output)
    # writerow():单行写入,将一个列表全部写入csv的同一行
    # writerows():多行写入,将一个二维列表的每一个列表写为一行

 43e5c0e8420c44439b7da0472d32eeee.png

 

总结

本文以一个爬虫小案例讲述怎么把爬取到的文本内容写入本地

有以下几种常用的方式:

1、写入txt文本

2、写入csv文件

3、写入sql(将在下篇博客讲述)

csv 模块

通过这个案例,顺便介绍了以下csv模块

常用的几种函数方法有:

写入:

  •  writerow():单行写入,将一个列表全部写入csv的同一行
  •     writerows():多行写入,将一个二维列表的每一个列表写为一行

读取:

reader()

比如:

with open('fxx_books.csv', 'r', encoding='utf-8') as f:
    csv_reader = csv.reader(f)  # 列表类型 可以通过 for each in csv_reader:遍历

 

 

 

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值