爬虫–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数据爬取与可视化相关推荐

  1. 用python,flask,echarts实现豆瓣读书top250的爬取及可视化大屏

    好的,我来为你讲解如何使用 Python.Flask 和 Echarts 实现豆瓣读书 Top250 的爬取和可视化大屏. 首先,你需要在你的电脑上安装 Python 和 Flask,并使用 pip ...

  2. Java网络爬虫--一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库

    一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 目录 一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 第一步:创建项目,搭建项目结构 p ...

  3. Requests爬虫实践:豆瓣读书Top250数据

    Requests爬虫实践:豆瓣读书Top250数据 本次的实践项目是爬取豆瓣读书Top250的书籍名称和网页地址 参考书籍:<Python网络爬虫从入门到实践> 书中爬的是电影数据,自己想 ...

  4. 豆瓣电影Top250信息爬取并保存到excel文件中

    豆瓣电影Top250下载并保存到excel文件中 效果图 前言 确定目标网页url 爬取过程 导入相关库 页面内容的获取 页面解析 数据提取 主函数的编写 函数调用 数据存储 完整代码 结语 效果图 ...

  5. 疫情数据爬取,可视化及其预测

    疫情数据爬取及可视化 数据爬取及保存(provinceDataGet.py) import requests import json import pandas as pd# 地区 areas = [ ...

  6. 如何用python可视化疫情风险区?地图标记位置信息:数据爬取+地址解析+可视化

    *本文仅就相关技术细节进行学术交流,请勿用作他途* 如何获取网页中发布的位置信息,在地图上进行标记可视化? Step 1: 数据获取 Step2: 地址解析 Step3: 地图可视化 地址编码后的数据 ...

  7. 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】

    [爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj

  8. 基于python大数据爬取房价数据可视化

    基于python大数据爬取房价数据可视化

  9. qt爬取网页信息_豆瓣TOP250数据爬取

    一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...

最新文章

  1. 高效办公,如何利用Python自动发送邮件
  2. Ubuntu14.04 + Text-Detection-with-FRCN(CPU)
  3. “/”应用程序中的服务器错误
  4. mysql -s 参数_mysqldump 的常用参数。
  5. 超级酒吧女生Java下载_超真实分享:一个人去酒吧的经验+注意事项
  6. PHP 标准AES加密算法类
  7. 第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
  8. mysql操作手册我_MySQL使用指南一
  9. LamBda学习(一)
  10. error 系统错误 错误码10007_工业界纠错系统
  11. win10删除vmware12后,重新安装失败(遗留注册表问题)解决总结
  12. 如何用 Python 爬取需要登录的网站
  13. 经济数学线性代数第三版课后习题答案
  14. Android木马病毒com.schemedroid的分析报告
  15. msxml6 x86.msi v6.10.1129.0
  16. strpos使用不当引发漏洞
  17. Windows下运行Makefile
  18. 卡巴斯基在桌面窗口管理器中发现零日漏洞
  19. 【面经】字节跳动C++社招5轮面试题分享
  20. PI圆周率小数点后一百万位数据

热门文章

  1. fast-lio2论文阅读 《FAST-LIO2: Fast Direct LiDAR-inertial Odometry》
  2. 24. GD32F103C8T6入门教程-IAP升级教程
  3. 集束搜索(beam search)和贪心搜索(greedy search)
  4. 网易云信第三方接口调用超详细Demo
  5. Linux命令学习资料总结
  6. 【企业管理】北邮国际学院大二上期末复习
  7. 小试X64 inline HOOK,hook explorer.exe---CreateProcessInternalW监视进程创建
  8. OpenCV--011:像素归一化
  9. php拼音首拼,PHP 汉字转拼音(可首字母)
  10. zblog php wordpress,zblog和wordpress哪个好