当前位置: 首页 > news >正文

soho网站建设绵阳模板网站

soho网站建设,绵阳模板网站,吴江网站开发,sns有哪些著名的网站有哪些导语 豆瓣是一个提供图书、电影、音乐等文化产品的社区平台#xff0c;用户可以在上面发表自己的评价和评论#xff0c;形成一个丰富的文化数据库。本文将介绍如何使用爬虫技术获取豆瓣图书的评分数据#xff0c;并进行可视化分析#xff0c;探索不同类型、不同年代、不同… 导语 豆瓣是一个提供图书、电影、音乐等文化产品的社区平台用户可以在上面发表自己的评价和评论形成一个丰富的文化数据库。本文将介绍如何使用爬虫技术获取豆瓣图书的评分数据并进行可视化分析探索不同类型、不同年代、不同地区的图书的评分特征和规律。 概述 本文的主要步骤如下 使用scrapy框架编写爬虫程序从豆瓣图书网站抓取图书的基本信息和评分数据保存为csv格式的文件。使用亿牛云爬虫代理服务提高爬虫效率和稳定性避免被豆瓣网站屏蔽或封禁。使用pandas库对爬取的数据进行清洗和处理提取出需要的字段和特征。使用matplotlib库对处理后的数据进行可视化分析绘制各种类型的图表展示不同维度的评分分布和关系。 正文 爬虫程序 首先我们需要编写一个爬虫程序从豆瓣图书网站抓取图书的基本信息和评分数据。我们使用scrapy框架来实现这个功能scrapy是一个强大而灵活的爬虫框架可以方便地定义爬虫规则和处理数据。我们需要定义一个Spider类继承自scrapy.Spider类并重写以下方法 start_requests该方法返回一个可迭代对象包含了爬虫开始时要访问的请求对象。我们可以从豆瓣图书首页开始获取所有分类的链接并构造请求对象。parse该方法负责处理start_requests返回的请求对象的响应并解析出需要的数据或者进一步的请求。我们可以使用scrapy自带的选择器或者BeautifulSoup等第三方库来解析HTML文档提取出图书列表页的链接并构造请求对象。parse_book该方法负责处理parse返回的请求对象的响应并解析出图书详情页的数据。我们可以使用同样的方式来提取出图书的基本信息和评分数据并将其保存为字典格式。close该方法在爬虫结束时被调用我们可以在这里将抓取到的数据保存为csv格式的文件。 为了提高爬虫效率和稳定性我们还需要使用亿牛云爬虫代理服务该服务提供了大量高质量的代理IP地址可以帮助我们避免被豆瓣网站屏蔽或封禁。我们只需要在settings.py文件中设置代理服务器的域名、端口、用户名和密码以及启用中间件HttpProxyMiddleware即可。 首先配置爬虫代理你可以按照以下步骤在Scrapy项目的settings.py文件中进行配置 确保已经安装了Scrapy以及相关依赖。然后打开你的Scrapy项目的settings.py文件并添加以下配置 # 启用HttpProxyMiddleware中间件 DOWNLOADER_MIDDLEWARES {scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware: 1, }# 设置亿牛云 爬虫代理服务器的配置 HTTPPROXY_AUTH_ENCODING utf-8 # 编码格式# 亿牛云 爬虫代理服务器的域名、端口、用户名和密码 HTTPPROXY_HOST www.16yun.cn HTTPPROXY_PORT 12345 HTTPPROXY_USER 16YUN HTTPPROXY_PASS 16IP 以下是爬虫程序的代码 # -*- coding: utf-8 -*- import scrapy import csvclass DoubanSpider(scrapy.Spider):name doubanallowed_domains [book.douban.com]start_urls [https://book.douban.com/]# 定义保存数据的列表data []def start_requests(self):# 从豆瓣图书首页开始yield scrapy.Request(urlself.start_urls[0], callbackself.parse)def parse(self, response):# 解析首页获取所有分类的链接categories response.xpath(//div[classarticle]/div[classindent]/table//a)for category in categories:# 构造分类页面的请求对象url category.xpath(./href).get()yield scrapy.Request(urlurl, callbackself.parse_book)def parse_book(self, response):# 解析分类页面获取图书列表books response.xpath(//li[classsubject-item])for book in books:# 构造图书详情页的请求对象url book.xpath(./div[classinfo]/h2/a/href).get()yield scrapy.Request(urlurl, callbackself.parse_detail)# 获取下一页的链接如果存在则继续爬取next_page response.xpath(//span[classnext]/a/href)if next_page:url next_page.get()yield scrapy.Request(urlurl, callbackself.parse_book)def parse_detail(self, response):# 解析图书详情页获取图书的基本信息和评分数据item {}item[title] response.xpath(//h1/span/text()).get() # 标题item[author] response.xpath(//span[contains(text(),作者)]/following-sibling::a/text()).get() # 作者item[publisher] response.xpath(//span[contains(text(),出版社)]/following-sibling::text()).get() # 出版社item[pub_date] response.xpath(//span[contains(text(),出版年)]/following-sibling::text()).get() # 出版年item[price] response.xpath(//span[contains(text(),定价)]/following-sibling::text()).get() # 定价item[rating] response.xpath(//strong/text()).get() # 评分item[rating_num] response.xpath(//a[contains(href,rating)]/span/text()).get() # 评分人数item[tags] response.xpath(//div[iddb-tags-section]/div[classindent]/span/a/text()).getall() # 标签# 将数据添加到列表中self.data.append(item)def close(self, spider, reason):# 爬虫结束时将数据保存为csv格式的文件with open(douban_books.csv, w, encodingutf-8, newline) as f:writer csv.DictWriter(f, fieldnamesself.data[0].keys())writer.writeheader()writer.writerows(self.data)数据清洗和处理 接下来我们需要对爬取的数据进行清洗和处理提取出需要的字段和特征。我们使用pandas库来实现这个功能pandas是一个强大而灵活的数据分析和处理库可以方便地读取、操作和转换数据。我们需要做以下几个步骤 读取csv文件将数据转换为DataFrame对象。去除空值和重复值保证数据的完整性和唯一性。对部分字段进行类型转换如将评分和评分人数转换为数值类型将出版年转换为日期类型。对部分字段进行拆分或合并如将作者拆分为中文作者和外文作者将标签合并为一个字符串。对部分字段进行分组或分类如根据评分区间划分为高分、中等、低分三类根据出版年划分为不同的年代。 以下是数据清洗和处理的代码 # -*- coding: utf-8 -*- import pandas as pd# 读取csv文件将数据转换为DataFrame对象 df pd.read_csv(douban_books.csv)# 去除空值和重复值保证数据的完整性和唯一性 df.dropna(inplaceTrue) df.drop_duplicates(inplaceTrue)# 对部分字段进行类型转换如将评分和评分人数转换为数值类型将出版年转换为日期类型 df[rating] pd.to_numeric(df[rating]) df[rating_num] pd.to_numeric(df[rating_num]) df[pub_date] pd.to_datetime(df[pub_date])# 对部分字段进行拆分或合并如将作者拆分为中文作者和外文作者将标签合并为一个字符串 df[‘tags’] df[‘tags’].apply(lambda x: ‘,’.join(x))# 对部分字段进行分组或分类如根据评分区间划分为高分、中等、低分三类根据出版年划分为不同的年代 df[‘rating_level’] pd.cut(df[‘rating’], bins[0, 7, 8.5, 10], labels[‘低分’, ‘中等’, ‘高分’]) df[‘pub_year’] df[‘pub_date’].dt.year df[‘pub_decade’] (df[‘pub_year’] // 10) * 10 #数据清洗和处理完成保存为新的csv文件 df.to_csv(‘douban_books_cleaned.csv’, indexFalse) 数据可视化分析 最后我们需要对处理后的数据进行可视化分析绘制各种类型的图表展示不同维度的评分分布和关系。我们使用matplotlib库来实现这个功能matplotlib是一个强大而灵活的数据可视化库可以方便地创建各种风格和格式的图表。我们需要做以下几个步骤 导入matplotlib库并设置中文显示和风格。读取清洗后的csv文件将数据转换为DataFrame对象。使用matplotlib的子模块pyplot来绘制各种图表如直方图、饼图、箱线图、散点图等。使用matplotlib的子模块axes来调整图表的标题、标签、刻度、图例等属性。使用matplotlib的子模块figure来保存图表为图片文件。 以下是数据可视化分析的代码 # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import pandas as pd# 导入matplotlib库并设置中文显示和风格 plt.rcParams[font.sans-serif] [SimHei] # 设置中文显示 plt.rcParams[axes.unicode_minus] False # 设置负号显示 plt.style.use(ggplot) # 设置风格# 读取清洗后的csv文件将数据转换为DataFrame对象 df pd.read_csv(douban_books_cleaned.csv)# 绘制直方图显示不同评分区间的图书数量 plt.figure(figsize(8, 6)) # 设置画布大小 plt.hist(df[rating], bins20, colorsteelblue, edgecolork) # 绘制直方图 plt.xlabel(评分) # 设置x轴标签 plt.ylabel(数量) # 设置y轴标签 plt.title(豆瓣图书评分直方图) # 设置标题 plt.savefig(rating_hist.png) # 保存图片# 绘制饼图显示不同评分等级的图书占比 plt.figure(figsize(8, 6)) # 设置画布大小 rating_level_counts df[rating_level].value_counts() # 计算不同评分等级的图书数量 plt.pie(rating_level_counts, labelsrating_level_counts.index, autopct%.2f%%, colors[limegreen, gold, tomato]) # 绘制饼图 plt.title(豆瓣图书评分等级饼图) # 设置标题 plt.savefig(rating_level_pie.png) # 保存图片# 绘制箱线图显示不同年代的图书评分分布 plt.figure(figsize(8, 6)) # 设置画布大小 decades df[pub_decade].unique() # 获取不同年代的列表 decades.sort() # 对年代进行排序 ratings_by_decade [df[df[pub_decade] decade][rating] for decade in decades] # 获取每个年代对应的评分列表 plt.boxplot(ratings_by_decade, labelsdecades) # 绘制箱线图 plt.xlabel(年代) # 设置x轴标签 plt.ylabel(评分) # 设置y轴标签 plt.title(豆瓣图书不同年代评分箱线图) # 设置标题 plt.savefig(rating_by_decade_box.png) # 保存图片# 绘制散点图显示评分和评分人数的关系 plt.figure(figsize(8, 6)) # 设置画布大小 plt.scatter(df[rating], df[rating_num], colorsteelblue, alpha0.5) # 绘制散点图 plt.xlabel(评分) # 设置x轴标签 plt.ylabel(评分人数) # 设置y轴标签 plt.title(豆瓣图书评分和评分人数散点图) # 设置标题 plt.savefig(rating_num_scatter.png) # 保存图片结语 本文介绍了如何使用爬虫技术获取豆瓣图书的评分数据并进行可视化分析探索不同类型、不同年代、不同地区的图书的评分特征和规律。通过本文我们可以学习到以下几点 如何使用scrapy框架编写爬虫程序从豆瓣图书网站抓取图书的基本信息和评分数据保存为csv格式的文件。如何使用亿牛云爬虫代理服务提高爬虫效率和稳定性避免被豆瓣网站屏蔽或封禁。如何使用pandas库对爬取的数据进行清洗和处理提取出需要的字段和特征。如何使用matplotlib库对处理后的数据进行可视化分析绘制各种类型的图表展示不同维度的评分分布和关系。 希望本文能够对你有所帮助如果你对爬虫技术或者数据可视化有兴趣可以继续深入学习和探索。谢谢你的阅读
http://www.hkea.cn/news/14261254/

相关文章:

  • 网站建设加盟代理wordpress后台禁止更新
  • 哪些人可以做网站网络舆情监测适合女生嘛
  • 用什么软件做网站布局股票做T网站
  • 支付网站设计汽车用品网站建设
  • 广州企业自助建站WP Rocket-WordPress
  • 郑州 服装网站建设百度搜索排名优化哪家好
  • 南京建设监理协会网站打不开网站彩铃怎么做的
  • 重庆建站公司网站模板一分钟建站
  • wordpress全站启用ssl网站logo制作教程
  • 上海外贸网站推广服务如何开发一款app软件
  • 计算机网站设计网站开发的具体流程图
  • 张家口购物网站开发设计js做网站
  • 婚纱摄影网站源码asp双语对照网站
  • 长春建设平台网站的公司wordpress 待办事项
  • 宝安做网站哪家好抖音信息流广告怎么投放
  • 个人网站服务器一年多少钱精美图表网站推荐
  • 支付网站建设费账务处理国美的网站做的怎么样
  • 网页制作网站首页个人网站如何发布
  • 做网站公司人员优设网视频剪辑
  • ps怎么做网站视频特效wordpress分类归档不科学
  • 手机网站底部广告代码企业目录
  • 深圳企业医疗网站建设如何做网站编辑
  • 河南省城乡与住房建设厅网站首页网站建设跑业务
  • 个人网站备案 拍照南通企业建站模板
  • 国内做网站的龙头企业自己做的网站怎么用qq登入
  • 校园网网站建设规划书西红门网站建设
  • 电子商务购物网站建设实验报告长沙好玩的地方景点推荐
  • 茂名网站建设造价工程师注册公示查询
  • 厦门手机网站wordpress对联广告
  • 网站建设的用户环境建设商城网站公司