scrapy爬虫框架和selenium的使用:对优惠券推荐网站数据LDA文本挖掘

news/2024/5/15 2:08:35/文章来源:https://tecdat.blog.csdn.net/article/details/128517249

 介绍

最近我们被客户要求撰写关于爬虫的研究报告,包括一些图形和统计输出。

每个人都喜欢省钱。我们都试图充分利用我们的资金,有时候这是最简单的事情,可以造成最大的不同。长期以来,优惠券一直被带到超市拿到折扣,但使用优惠券从未如此简单,这要归功于Groupon。

Groupon是一个优惠券推荐服务,可以在您附近的餐馆和商店广播电子优惠券。其中一些优惠券可能非常重要,特别是在计划小组活动时,因为折扣可以高达60%。

相关视频:文本挖掘:主题模型(LDA)及R语言实现分析游记数据

文本挖掘:主题模型(LDA)及R语言实现分析游记数据

时长12:59


数据

这些数据是从Groupon网站的纽约市区域获得的。网站的布局分为所有不同groupon的专辑搜索,然后是每个特定groupon的深度页面。网站外观如下所示:

两个页面的布局都不是动态的,所以建立了一个自定义scrapy ,以便快速浏览所有的页面并检索要分析的信息。然而,评论,重要的信息,通过JavaScript呈现和加载 。Selenium脚本使用从scrapy获取的groupons的URL,实质上模仿了人类点击用户注释部分中的“next”按钮。

for url in url_list.url[0:50]:try:driver.get(url)time.sleep(2)#关闭出现的任何弹出窗口## if(driver.switch_to_alert()):try:close = driver.find_element_by_xpath('//a[@id="nothx"]')close.click()except:passtime.sleep(1)try:link = driver.find_element_by_xpath('//div[@id="all-tips-link"]')driver.execute_script("arguments[0].click();", link)time.sleep(2)except:nexti = 1print(url)while True:try:time.sleep(2)print("Scraping Page: " + str(i))reviews = driver.find_elements_by_xpath('//div[@class="tip-item classic-tip"]')next_bt = driver.find_element_by_link_text('Next')for review in reviews[3:]:review_dict = {}content = review.find_element_by_xpath('.//div[@class="twelve columns tip-text ugc-ellipsisable-tip ellipsis"]').textauthor = review.find_element_by_xpath('.//div[@class="user-text"]/span[@class="tips-reviewer-name"]').textdate = review.find_element_by_xpath('.//div[@class="user-text"]/span[@class="reviewer-reviewed-date"]').textreview_dict['author'] = authorreview_dict['date'] = datereview_dict['content'] = contentreview_dict['url'] = urlwriter.writerow(review_dict.values())i += 1 next_bt.click()except:breakexcept:nextcsv_file.close()
driver.close()

从每个组中检索的数据如下所示。

Groupon标题 

分类信息

交易功能位置

总评分数网址

作者日期

评论网址

大约有89,000个用户评论。从每个评论中检索的数据如下所示。

print(all_groupon_reviews[all_groupon_reviews.content.apply(lambda x: isinstance(x, float))])
indx = [10096]
all_groupon_reviews.content.iloc[indx]author       date content  \
10096  Patricia D. 2017-02-15     NaN   
15846       Pat H. 2016-09-24     NaN   
19595      Tova F. 2012-12-20     NaN   
40328   Phyllis H. 2015-06-28     NaN   
80140     Andre A. 2013-03-26     NaN   url  year  month  day  
10096  https://www.groupon.com/deals/statler-grill-9  2017      2   15  
15846         https://www.groupon.com/deals/impark-3  2016      9   24  
19595   https://www.groupon.com/deals/hair-bar-nyc-1  2012     12   20  
40328     https://www.groupon.com/deals/kumo-sushi-1  2015      6   28  
80140  https://www.groupon.com/deals/woodburybus-com  2013      3   26  

探索性数据分析

一个有趣的发现是在过去的几年里,群体的使用已经大大增加了。我们通过检查评论提供的日期来发现这一点。看下面的图像,其中x轴表示月/年和y轴,表示计数,这个结论变得明显。最后的小幅下滑是由于当时的一些小组可能是季节性的。

一个有趣的发现是在过去的几年里,群体的使用已经大大增加了。我们通过检查评论提供的日期来发现这一点。看下面的图像,其中x轴表示月/年和y轴,表示计数。最后的小幅下滑是由于当时的一些小组可能是季节性的。

pie_chart_df = Groupons.groupby('categories').agg('count')plt.rcParams['figure.figsize'] = (8,8)sizes = list(pie_chart_df.mini_info)
labels = pie_chart_df.index
plt.pie(sizes, shadow=True, labels = labels, autopct='%1.1f%%', startangle=140)
# plt.legend(labels, loc="best")
plt.axis('equal')

最后,由于大部分数据是通过文本:价格(原价),导出了一个正则表达式来解析价格信息,以及它们提供的交易数量。该信息显示在以下条形图中:


objects = list(offer_counts.keys())
y = list(offer_counts.values())
tst = np.arange(len(y))plt.bar(tst,y, align = 'center')
plt.xticks(tst, objects)
plt.ylabel('Total Number of Groupons')
plt.xlabel('Different Discounts Offers')
plt.show()


plt.ylabel('Number of Offerings')
plt.xticks(ind, ('Auto', 'Beauty', 'Food', 'Health', 'Home', 'Personal', 'Things'))
plt.xlabel('Category of Groupon')
plt.legend((p0[0], p1[0], p2[0], p3[0], p4[0], p5[0], p6[0], p7[0], p10[0]), ('0', '1', '2', '3', '4', '5', '6', '7', '10'))

sns.violinplot(data = savings_dataframe)

最后,利用用户评论数据生成一个文字云:

plt.rcParams['figure.figsize'] = (20,20)
wordcloud = WordCloud(width=4000, height=2000, max_words=150, background_color='white').generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")


主题建模

为了进行主题建模,使用的两个最重要的软件包是gensimspacy。创建一个语料库的第一步是删除所有停用词,如“,”等。最后创造trigrams。

选择的模型是Latent Dirichlet Allocation,因为它能够区分来自不同文档的主题,并且存在一个可以清晰有效地将结果可视化的包。由于该方法是无监督的,因此必须事先选择主题数量,在模型的25次连续迭代中最优数目为3。结果如下:

上面的可视化是将主题投影到两个组件上,其中相似的主题会更接近,而不相似的主题会更远。右边的单词是组成每个主题的单词,lambda参数控制单词的排他性。0的lambda表示每个主题周围的最排斥的单词,而1的lambda表示每个主题周围的最频繁的单词。

第一个话题代表服务的质量和接待。第二个话题有描述锻炼和身体活动的词语。最后,第三个话题有属于食品类的词语。

结论

主题建模是无监督学习的一种形式,这个项目的范围是简要地检查在基础词语背后发现模式的功能。虽然我们认为我们对某些产品/服务的评论是独一无二的,但是这个模型清楚地表明,实际上,某些词汇在整个人群中被使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732466.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7个设计师必备的国际顶尖设计网站

成为dA(deviantart)的忠实用户有很多理由——dA是最大的艺术社区;成为dA用户简直是设计新手的必经之路。但是,这些都不妨碍你加入其他专业的网站来展现你的才华。 创立于12年前的dA现在拥有最多的艺术爱好者受众。然而&#xff0c…

追踪服务器的网站,网站Tracert路由追踪|在线Tracert工具—卡卡网 www.webkaka.com

Tracert是一个dos下的网络命令,主要作用是对路由进行跟踪。它是一个简单的网络诊断工具,可以列出分组经过的路由节点,以及它在IP 网络中每一跳的延迟。(这里的延迟是指:分组从信息源发送到目的地所需的时间,延迟也分为…

大型分布式网站架构技术总结

出处:ITFLY8 网址:http://www.cnblogs.com/itfly8/p/4967966.html 本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一…

Apache+php+mysq配置本地多个虚拟网站

首先我下载的是wampserver 64位, 按照自己的电脑系统下载 一般就分两种 ,1 32为操作系统, 2 64为操作系统。 下面是软件图 文件64位; 安装教程就不写了。 下一步下一步就行 下面改到了配置了 首先第一步、 这里的 gao.com 就…

一个程序员单枪匹马,靠一个网站一年赚1个亿

是什么 网站叫BuiltWith.com,通过它可以查看其他网站使用了什么技术,什么编程语言、服务器及广告系统 可以客户生成、销售情报和市场分析提供的许多服务的用户使用,潜在客户列表的客户等,帮助企业赚钱、发现潜在客户。 这个网站仅…

Caddy实战(一)| 托管你的网站,只需一行命令

点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章继续在Github猎奇,又看到了caddy这个Web服务器,发现star已经33K了,而且最近上升的也比较快,所以打算研究下它。周末抽了点时间,看了下c…

django实战仿慕课网在线视频网站(完成了85%以上的功能已上传github:https://github.com/huwei86/mxonline):...

1. 前台功能模块 基本模块:登录 注册 找回密码 / 全局搜索 / 个人中心, 课程功能:课程管理 / 讲师管理 / 授课机构管理 热门推荐 相关课程推荐 用户操作管理:用户收藏 / 课程评论2.后台管理系统课程管理模块:课程管理…

原创:LNMP架构部署个人博客网站 禁止转载复制

nginx编译安装步骤 ①. 检查软件安装的系统环境 cat /etc/redhat-release uname -r ②. 安装nginx的依赖包(pcre-devel openssl-devel)---假设不进行安装 yum install -y pcre-devel openssl-devel ③. 下载nginx软件---1.10.2 复制链接地址&#xff0…

setrequestproperty参数_「setrequestproperty」详解HttpURLConnection - seo实验室

setrequestproperty请求响应流程设置连接参数的方法setAllowUserInteractionsetDoInputsetDoOutputsetIfModifiedSincesetUsecachessetDefaultAllowUserInteractionsetDefaultUseCaches设置请求头或响应头HTTP请求允许一个key带多个用逗号分开的values,但是HttpURLC…

maven依赖查询网站

https://mvnrepository.com/,是maven依赖查询网站。 比如,现在要查询docker-maven-plugin这个插件。 搜到 com.spotify docker-maven-plugin 点击版本号,可以知道如何在pom.xml中引入这个依赖 点击Central,可以知道该依赖所在中…

使用Python-Flask框架开发Web网站系列课程(一)构建项目

前言 使用IDE:PyCharm 操作系统: Mac Python版本:3.6 我的邮箱:51263921qq.com 交流群: 372430835 请注意,既然要学习开发,那么要注意以下几个问题。 1、开发语言版本不一样,尤其是Python,会导致同一段代码…

网站复制工具:HTTrack

HTTrack简介: HTTrack是Kali中内置的工具,主要用于克隆网站。渗透测试人员可以利用它来在自主可控制的环境中查看该网站的完整内容:所有离线文件。同时可以利用该网站的副本来开发假冒的钓鱼网站。【遵守法律法规】 (1&#xff09…

企业建站“智能化”成小成本建站趋势

2019独角兽企业重金招聘Python工程师标准>>> 随着电子商务的不断走热,中小企业对网络营销越来越看重,于是企业建站成了众多企业间的热门话题。虽然大家对建设网站表现出了足够的热心,但是如何建设网站却成了中小企业的拦路虎。是请…

快速打造一个有设计感的网站

英文原文: How to Make Your Site Look Half-Decent in Half an Hour;编译:极客公园 注:拥有属于自己的网站是很多人的梦想,但大多数人只能借助像 WordPress 这样的 CMS 实现,甚至很多公司网站也是这样。但…

网站发布错误“遭遇战”

前两天试着把写好的《新闻发布系统》网站在本地发布了一下,遭遇了一系列错误,着实头疼了一回。 不知道网友们是不是也跟我一样,屡次遭遇“/”应用程序中的服务器错误,想抓狂,想把电脑从楼上扔下去。 不过还好&#xff…

替代微软IIS强大的HTTP网站服务器工具

方配网站服务器(FPWebServer) 是一款免费轻量级独立安装版的IIS服务器,兼具 IIS 的强大功能与轻型免费 Web 服务器的便利,可以使任何人快速搭建部署ASP、ASP.NET、PHP服务器运行环境。一健安装方式与简便的管理界面,可以让 Windows 上的 Web …

隐藏a标签seo_做SEO快速排名如何选好域名?挖掘优质老域名特征解读

大家都知道,做SEO使用有过建站历史的老域名,效果会比较快比较稳。老域名也有好有坏,好的域名带来效果,坏的域名没有效果,白白浪费成本和时间。如何选择一个对SEO有效果的老域名,桔子SEO在之前的几讲也讲过&…

java程序设计任务驱动实训教程上海交通大学出版社_新书推荐 | ASP.NET网站开发项目化教程(教学大纲)...

ASP.NET网站开发项目化教程(教学大纲)课程名称ASP.NET应用开发适用专业软件技术课程类型职业技术课程版本V.02学分/课时5 / 84先修课程数据库设计与实现、C#与WinForm高级程序设计、网页设计与制作、JavaScript客户端脚本编程01.课程概述(一)课程性质与作用《ASP.NET应用开发》…

MSDN资源免费下载 之备份网站

MSDN资源免费下载 之备份网站 今天访问 MSDN 我告诉你(http://msdn.itellyou.cn/)出现问题了,一直无法访问。 之前我也发了一篇博文关于他的:MSDN资源免费下载 不过我们还有一个备用的网站 : MSDN ISO下载(…

使用jQuery Mobile移动开发框架将博客网站快速转化为Mobile网站

日期:2012-7-12 来源:GBin1.com 在线演示 jQuery Mobile是一个非常不错的移动端网站应用的解决方案,很多网站都使用jQuery Mobile来生成Mobile手机端的移动网站应用,在过去的GBin1博客文章中,我们曾经使用jQuery Mob…