豆瓣读书top250数据爬取与可视化
爬虫–scrapy
题目:根据豆瓣读书top250,根据出版社对书籍数量分类,绘制饼图
搭建环境
import scrapy
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
加载scrapy框架
#terminal 终端实现
cd .. # 跳转到上一层目录
scrapy startproject booktop # 和项目同名的scrapy框架项目
setting配置
ROBOTSTXT_OBEY = False # 君子协议 false 不遵守
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
DOWNLOAD_DELAY = 0.5 # 下载延迟## 如何改变文本的样式
spider编写
#spiders文件夹下创建python文件 bookspider.py
import scrapy
from booktop.items import BookItem
class BookSpider(scrapy.Spider):name="bookspider"allowed_domains=['book.douban.com']start_urls=['https://book.douban.com/top250']def parse(self, response, **kwargs):print(response.text) # 测试页面
测试:
#在terminal终端进行
cd booktop # 进入项目文件夹
scrapy crawl bookspider # 运行项目下的爬虫(和name的值保持一致)
# 测试成功,看到页面代码
获取数据(书名+出版社)
需要导入BookItem类 文件开头导入 from booktop.items import BookItem
def parse(self, response, **kwargs):#print(response.text)# table 一个table一本书tables=response.xpath('//table') # css也可以# print('书籍个数',len(tables))# print(tables)for t in tables:#提取 extract()[0]tit=t.css('div.pl2 a::attr(title)').extract()[0]# print(title) 书名pu=t.css('p.pl::text').extract()[0]pu=pu.split('/')[-3].strip()#print(pub) 出版社yield BookItem(title=tit,pub=pu)
需要使用item对象完成数据封装并传输
#items.py书写书类
class BookItem(scrapy.Item):#define the fields for your item here like:title = scrapy.Field()pub=scrapy.Field()pass
pipeline 管道存储数据
# 在setting文件下,解开注释
ITEM_PIPELINES = {'booktop.pipelines.BooktopPipeline': 300,
}
数据存储到txt文件下
# 打开管道文件 BooktopPipeline
class BooktopPipeline:def process_item(self, item, spider):# 编码格式设置为utf-8file=open('result.txt','a+',encoding='utf-8')file.write(item['title']+','+item['pub']+'\n')return item
# 运行测试结果result.txt下有数据成功
分析和可视化
# 在项目中创建 分析文件 demo1.py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
# 处理中文字体
font = {'family': 'microsoft yahei','weight': 'bold','size': 12}
matplotlib.rc('font',**font)
# 读取文件
df=pd.read_csv('result.txt',names=['title','pub'])
# print(df)
# 福尔摩斯探案集 出版社有问题,手动修改
df.loc[8,'pub']='群众出版社'
# print(df)
# 按出版社不同分类汇总书数量,取出前5名
result=df['pub'].value_counts().head()
print(result)
plt.pie(result,labels=result.index,autopct='%3.1f%%')
plt.show()
豆瓣读书top250数据爬取与可视化相关推荐
- 用python,flask,echarts实现豆瓣读书top250的爬取及可视化大屏
好的,我来为你讲解如何使用 Python.Flask 和 Echarts 实现豆瓣读书 Top250 的爬取和可视化大屏. 首先,你需要在你的电脑上安装 Python 和 Flask,并使用 pip ...
- Java网络爬虫--一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库
一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 目录 一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 第一步:创建项目,搭建项目结构 p ...
- Requests爬虫实践:豆瓣读书Top250数据
Requests爬虫实践:豆瓣读书Top250数据 本次的实践项目是爬取豆瓣读书Top250的书籍名称和网页地址 参考书籍:<Python网络爬虫从入门到实践> 书中爬的是电影数据,自己想 ...
- 豆瓣电影Top250信息爬取并保存到excel文件中
豆瓣电影Top250下载并保存到excel文件中 效果图 前言 确定目标网页url 爬取过程 导入相关库 页面内容的获取 页面解析 数据提取 主函数的编写 函数调用 数据存储 完整代码 结语 效果图 ...
- 疫情数据爬取,可视化及其预测
疫情数据爬取及可视化 数据爬取及保存(provinceDataGet.py) import requests import json import pandas as pd# 地区 areas = [ ...
- 如何用python可视化疫情风险区?地图标记位置信息:数据爬取+地址解析+可视化
*本文仅就相关技术细节进行学术交流,请勿用作他途* 如何获取网页中发布的位置信息,在地图上进行标记可视化? Step 1: 数据获取 Step2: 地址解析 Step3: 地图可视化 地址编码后的数据 ...
- 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】
[爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj
- 基于python大数据爬取房价数据可视化
基于python大数据爬取房价数据可视化
- qt爬取网页信息_豆瓣TOP250数据爬取
一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...
最新文章
- 高效办公,如何利用Python自动发送邮件
- Ubuntu14.04 + Text-Detection-with-FRCN(CPU)
- “/”应用程序中的服务器错误
- mysql -s 参数_mysqldump 的常用参数。
- 超级酒吧女生Java下载_超真实分享:一个人去酒吧的经验+注意事项
- PHP 标准AES加密算法类
- 第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
- mysql操作手册我_MySQL使用指南一
- LamBda学习(一)
- error 系统错误 错误码10007_工业界纠错系统
- win10删除vmware12后,重新安装失败(遗留注册表问题)解决总结
- 如何用 Python 爬取需要登录的网站
- 经济数学线性代数第三版课后习题答案
- Android木马病毒com.schemedroid的分析报告
- msxml6 x86.msi v6.10.1129.0
- strpos使用不当引发漏洞
- Windows下运行Makefile
- 卡巴斯基在桌面窗口管理器中发现零日漏洞
- 【面经】字节跳动C++社招5轮面试题分享
- PI圆周率小数点后一百万位数据
热门文章
- fast-lio2论文阅读 《FAST-LIO2: Fast Direct LiDAR-inertial Odometry》
- 24. GD32F103C8T6入门教程-IAP升级教程
- 集束搜索(beam search)和贪心搜索(greedy search)
- 网易云信第三方接口调用超详细Demo
- Linux命令学习资料总结
- 【企业管理】北邮国际学院大二上期末复习
- 小试X64 inline HOOK,hook explorer.exe---CreateProcessInternalW监视进程创建
- OpenCV--011:像素归一化
- php拼音首拼,PHP 汉字转拼音(可首字母)
- zblog php wordpress,zblog和wordpress哪个好