Python爬虫练习:并尝试将数据写入txt文本,execl表格,mysql数据库

本文主要是介绍Python爬虫练习:并尝试将数据写入txt文本,execl表格,mysql数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该文章只供技术学习使用.

爬虫流程图: 

爬虫代码:

# -*-coding:utf-8 -*-
# 爬虫模块练习: 并尝试将数据写入txt文本,execl表格,mysql数据库中,
import requests
import pymysql
import xlwt
import redef data_list(url):headers = { # 浏览器中响应头获取'Cookie': 'aliyungf_tc=018d0cffa99caeaf6a43b05c1ca2a035e271e2dfa5ab484e9f7d4c99b025ef02; ''acw_tc=b65cfd4316487269571516221e46be5fe70272c16e4ba909e68ee7d1b13887; ''acw_sc__v2=624593ad266cf74ca4a2d299d6a6d6da9363f4fd; HTTP_REFERER=book.km.com ', 'Referer': 'http://book.km.com/boy.html','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55 '}repose = requests.get(url, headers=headers).textparroe = re.compile(r'<h1 class="fontSize17andHei" title="(.*?)">')book_tile = parroe.findall(repose)  # 拿到书名author_list = []  # 存储作者名author_name1 = re.findall(r'<span class="fontSize14andsHui">(.*?)</span>', repose)for item in author_name1:parroe1 = re.compile(r'<a.*>(.*?)</a>')author_name2 = parroe1.findall(item)author_name2 = str(author_name2)author_name2 = re.sub('[\[\]\']', '', author_name2)author_list.append(author_name2)parroe2 = re.compile(r'<span class="fontSize14andHui">(.*?)</span>')novel_type1 = parroe2.findall(repose)novel_type = []  # 存储小说类型for item in novel_type1:parroe3 = re.compile(r'<a.*?>(.*?)</a>')novel_type2 = parroe3.findall(item)novel_type.append(novel_type2[0])parroe4 = re.compile(r'<span class="fontSize14andHui">(.*?)</span></div>')text = parroe4.findall(repose)novel_text = []  # 拿到周点击,字数,更新日期,里面是三个元素组成的列表.for item in text:text1 = re.findall(r'<span>(.*?)</span>', item)date_text = text1[-1]date_time = re.findall(r'日期:<font class="fontSize14andChen"><font color=".*">(.*?)</font></font>', date_text)novel_text.append([text1[1], text1[3], date_time[0]])book2 = []  # 将上面的全部数据封装到一个大的列表中,for x in range(0, len(book_tile)):book = []book.append(book_tile[x])book.append(author_list[x])book.append(novel_type[x])book.append(novel_text[x][0])book.append(novel_text[x][1])book.append(novel_text[x][2])book2.append(tuple(book))return book2def save_text(book2):try:with open('novel.txt', 'w', encoding="UTF-8") as text:h1 = ['书名', '作者', '类型', '周点击', '字数', '更新时间']for x in h1:text.write(x + "-------------")text.write("\n")for i in range(0, 30):for x in range(0, 6):text.write(book2[i][x] + "---")text.write("\n")print("写入文本中执行成功!")except BaseException:print("写入文本中执行失败!")# 写入execl中
def save_book_execl(book2):try:book_text = xlwt.Workbook(encoding='utf-8', style_compression=0)sheet = book_text.add_sheet('小说', cell_overwrite_ok=True)col = ('小说名', '作者', '类型', '周点击', '字数', '更新日期')for i in range(0, len(col)):sheet.write(0, i, col[i])for i in range(0, 30):for z in range(0, len(col)):sheet.write(i + 1, z, book2[i][z])savepath = 'D:/酷狗音乐/novel.xls'book_text.save(savepath)print("写入execl中执行成功!")except BaseException:print("写入execl中执行失败!")# 写入数据库
def save_mysql(book2):try:# 链接数据库conn = pymysql.connect(host='localhost', user='root', password='Nebula@123', db='python', port=3306,charset='utf8')# 创建游标:cur = conn.cursor()# #创建表:# sql_table="CREATE TABLE xiaoshuo(id int(8) not null  auto_increment  primary key,book_name VARCHAR(100),book_author " \#           "VARCHAR(100),boook_type VARCHAR(100),clik VARCHAR(100),number VARCHAR(100),date VARCHAR(100) ) "### cur.execute(sql_table) #执行一个数据库查询和命令# conn.commit() #提交但前事物(写入数据时也会用到)# 将数据写入数据库:for i in range(0, 30):into = "INSERT INTO xiaoshuo(book_name,book_author,boook_type,clik,number,date) VALUES ( %s, %s,%s,%s,%s,%s)"values = (book2[i][0], book2[i][1], book2[i][2], book2[i][3], book2[i][4], book2[i][5])cur.execute(into, values)conn.commit()  # 提交事务print("写入数据库中成功!")except BaseException:print("写入数据库中失败!")# 可视化处理函数
def guis(lists, type):# 处理大列表,取出前10的点击量小说信息.list1 = []list_navel_name = []for x in lists:click_num = x[3].split(':')list1.append(int(click_num[1]))list1.sort(reverse=True)#排序list2 = []for i in range(0, 10):list2.append(list1[i]) #获取排名前十的点击量数值# print(list2)for y in lists:equ = int(y[3].split(':')[1]) #处理字符串# print(equ)for j in range(0, len(list2)):if equ == int(list2[j]):list_navel_name.append(y) #获取到小说名x = []y = list2for num in range(0, len(list_navel_name)):x.append(list_navel_name[num][0])# 实现可视化图形;plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.rcParams['axes.unicode_minus'] = Falsematplotlib.use('WebAgg')if type == "histogram":  # 柱状图plt.bar(x, y, width=0.3, color='blue')elif type == "chart":  # 条形图plt.barh(x, y, height=0.3, color='blue')elif type == "line":  # 折线图plt.plot(x, y, linewidth=2, linestyle='-')elif type == "Area":  # 面积图plt.stackplot(x, y)elif type == "scatter":  # 散点图plt.scatter(x, y)elif type == "pie":  # 饼图plt.pie(y, labels=x, autopct='%3.2f%%')else:print("输入错误!")plt.show()# 展示词云函数
def cloud(book2):with open('string.text', 'w', encoding="utf-8") as file:for x in book2:file.write(x[0] + x[2])with open('string.text', 'r', encoding='UTF-8') as file:text = file.read()  # 读取文件内容text = re.sub('[!,:,?的!了 我是]', '', text)word1 = jieba.lcut(text)  # 将文本进行分词处理word2 = " ".join(word1)  # 将分好的词通过空格连接print(word2)# 创建背景图mask = np.array(Image.open('D:\\爬虫图片\\love.png'))  # 获取背景图片# mask=imread('D:\\爬虫图片\\2.jpg')a = WordCloud(background_color='white',  # 设置颜色font_path='C:\Windows\Fonts\simhei.ttf',  # 设置字体width=1080,  # 设置大小mask=mask,  # 如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取height=626,max_words=50  # 要显示的词的最大个数,默认200).generate(word2)image = ImageColorGenerator(mask)  # 提取颜色a.recolor(color_func=image)  # 替换默认的字体颜色a.to_file('test.jpg')  # 生成词云图片# plt.imshow(a)# plt.axis("off")# plt.savefig('test1.jpg')if __name__ == '__main__':url = '*********'  #需要自己定义book2 = data_list(url)cloud(book2)# guis(book2,"pie")# guis(book2, "histogram")# save_text(book2)# save_book_execl(book2)# save_mysql(book2)

这篇关于Python爬虫练习:并尝试将数据写入txt文本,execl表格,mysql数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/756628

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了