文章目录
总结:
介绍了csv 模块
前言大纲:
通过一个爬虫小案例:爬取文章标题讲述怎么写入csv文件
1、目的:爬取标题
虎扑 获取主页标题 url = 'https://bbs.hupu.com/'
通过审查元素F12 我们可以知道标题都在
span标签下的class="t-title"下
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())
输出:
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')
如下:
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)
输出如下:
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)
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]) # 列表的第一项
输出:
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():多行写入,将一个二维列表的每一个列表写为一行
总结
本文以一个爬虫小案例讲述怎么把爬取到的文本内容写入本地
有以下几种常用的方式:
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:遍历