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

本文介绍如何使用Python将爬取的数据存储到本地,包括txt文本、csv文件等常见方式,并详细展示了利用csv模块进行数据写入及读取的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

前言大纲:

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的博客-优快云博客_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:遍历

 

 

 

### 使用网页爬虫创建处理CSV文件 #### Python爬虫CSV文件简介 Python作为一种强大的编程语言,在网络爬虫开发方面具有显著优势。通过结合`requests`库获取网页内容,利用`BeautifulSoup`解析HTML文档结构,可以有效地提取所需数据[^1]。 #### CSV文件概念说明 CSV(Comma Separated Values),即逗号分隔值文件,是一种纯文本形式存储表格数据的文件格式。每一行代表一条记录;字段之间由逗号或其他字符分割开。这种简单的结构使得CSV成为数据交换的理想选择之一[^2]。 #### 数据抓取流程概述 为了实现从Web页面自动收集信息并存入CSV文件的目标,通常遵循如下工作流: - **发送HTTP请求**:借助于`requests.get()`函数向目标网站发起GET请求; - **解析响应内容**:运用`BeautifulSoup`对象读取返回的内容,并定位至感兴趣的标签节点; - **提取有用信息**:遍历DOM树状结构中的特定元素,从中抽取待保存的信息项; - **写入本地磁盘**:调用内置`csv.writer()`方法或者Pandas库下的`.to_csv()`接口完成最终的数据持久化操作[^3]。 #### 实际案例展示 下面给出一段完整的代码片段用于示范上述理论知识点的应用场景——假设要爬取某电影评论区前几页用户的评分情况: ```python import requests from bs4 import BeautifulSoup as soup import csv url = 'https://example.com/movie/reviews?page=' headers = {'User-Agent': 'Mozilla/5.0'} data_list = [] for i in range(1, 6): # 假设只看前五页 res = requests.get(url + str(i), headers=headers) page_soup = soup(res.text, "html.parser") reviews = page_soup.find_all('div', class_='review') for review in reviews: score = review.select_one('.rating').text.strip() user_name = review.select_one('.username').text.strip() data_list.append([score, user_name]) with open('movie_reviews.csv', mode='w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['Score', 'Username']) writer.writerows(data_list) print("Data has been successfully written to movie_reviews.csv.") ``` 此段脚本首先定义了访问地址模板以及模拟浏览器行为所需的头部参数;接着循环迭代不同编号对应的URL链接来获取全部评价列表;最后将整理好的二维数组一次性写出到指定路径下名为`movie_reviews.csv`的新建文件里去[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值