R语言对京东商品进行文本爬虫
R语言对京东商品进行文本爬虫
电商产品评论数据情感分析
2021/5/11 数据科学实验笔记 周三
随着电子商务的迅速发展和网络购物的流行,人们对于网络购物的需求变得越来越高,也给电商企业带来巨大的发展机遇,与此同时,这种需求也推动了更多电商企业的崛起,引发了激烈的竞争。而在这种激烈竞争的大背景下,除了提高商品质量、压低价格外,了解更多消费者的心声对电商企业来说也变得越来越有必要。其中非常重要的方式就是对消费者的评论文本数据进行内在信息的分析。
评论信息中蕴含着消费者对特定产品和服务的主观感受,反应了人们的态度、立场和意见,具有非常宝贵的研宄价值。一方面,对企业来说,企业需要根据海量的评论文本数据去更好的了解用户的个人喜好,从而提高产品质量,改善服务,获取市场上的竞争优势。另一方面,消费者需要在没有看到真正的产品实体、做出购买决策之前,根据其他购物者的评论了解产品的质量、性价比等信息,为购物抉择提供参考依据。
1. 获取数据
即如何使用R进行爬虫
步骤
1、在官网下载google chrome浏览器并安装
2、在该浏览器打开“京东商城”,
并在京东商城网页右上角位置找到“Web开发者工具”按钮。
3、打开网络(Network)面板,再点击京东商城网页中的评论项,找到评论项的网址(URL)。
详细步骤:
1)打开京东商城 选择一个商品【以小米手机K40 PRO 为例】
2)打开该商品页面,并打开评论区域
3)打开开发者工具
4)点击代码页面里面的 network
5)点击网页页面里面的 “好评”
6)点击代码框里面 “好评ProductPageComment” 的选项
7)点击“Headers”
得到URL如下:
Request URL: https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100018642156&score=3&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
接下来在R中输入代码:
(如果第一次使用,要下载#后面所示的两个包)
# 代码 8-1 京东商品文本爬虫# 设置工作目录
#setwd("F:/第8章/01-任务程序")# 对一个URL进行测试,注意网络打开状态
url <- 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv80998&productId=1106432&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&rid=0&fold=1'
#url <- 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100018642156&score=3&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'# 加载需要的包
#install.packages("RCurl")
#install.packages("jsonlite")
library(RCurl) # 需要使用getURL函数
library(jsonlite) # Version:1.5 需要使用fromJSON函数# 读取网页源码
web <- getURL(url, .encoding = 'GBK')
—————————————————————————————————
(其中到这一行代码一直报错,如下所示:
# 读取网页源码
web <- getURL(url, .encoding = 'GBK')
我现在也不知道为什么,其中报错的结果是这样的:
> web <- getURL(url, .encoding = 'GBK')
Warning message:
In grepl("\\\\u[0-9A-Fa-f]", str) : 输入的字符串1不适用于此语言环境
如果等我解决了我就把解决方法更新在下面
wait to be edit
—————————————————————————————————
接下来的R代码为:
# 代码 8-2
# 由于读取到的源码不是标准的JSON格式,因此需要将符合JSON格式的内容提取出来
web <- substr(web,nchar("fetchJSON_comment98") + 2, nchar(web) - 2)
#注意:引号里的东西在路径里查找# 将JSON格式数据转为R语言列表格式
result <- jsonlite::fromJSON(web)# 提取评论数据(注意:只有第一页的数据被提取了)
result$comments$referenceName # 品牌名
result$comments$nickname # 用户昵称
result$comments$creationTime # 发表时间
result$comments$content # 评论内容# 代码 8-3# 批量提取评论数据
# 首先先构建评论地址
# 其中score=1表示差评数据,3表示好评数据
pos_url <- list() # 初始化好评评论地址集
neg_url <- list() # 初始化差评评论地址集
n <- 100 # 该商品评论页数最大100页
for(i in 1:n){pos_url[[i]] <- paste0('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv80998&productId=1106432&score=3&sortType=5&page=',i-1,'&pageSize=10&isShadowSku=0&rid=0&fold=1')neg_url[[i]] <- paste0('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv80998&productId=1106432&score=1&sortType=5&page=',i-1,'&pageSize=10&isShadowSku=0&rid=0&fold=1')
}content_url <- data.frame(pos_url = unlist(pos_url),neg_url = unlist(neg_url))
#查看内容
dim(content_url)#100行2列
str(content_url)
head(content_url)# 批量提取评论数据
pos_content <- list()
neg_content <- list()
# 这里是20页,也可以是100
for(i in 1:20){# 好评数据提取
#获取源代码pos_web <- getURL(as.character(content_url[i, 1]), .encoding = 'GBK')
#转换json格式为R语言格式pos_web <- substr(pos_web,nchar("fetchJSON_comment98vv80926") + 2,nchar(pos_web) - 2)
#提取JSON格式pos_result <- jsonlite::fromJSON(pos_web)pos_content[[i]] <- data.frame(referenceName = pos_result$comments$referenceName,nickname = pos_result$comments$nickname,creationTime = pos_result$comments$creationTime,content = pos_result$comments$content)message("pos_page ", i)Sys.sleep(2)# 差评数据提取neg_web <- getURL(as.character(content_url[i, 2]), .encoding = 'GBK')neg_web <- substr(neg_web,nchar("fetchJSON_comment98vv80926") + 2,nchar(neg_web) - 2)neg_result <- jsonlite::fromJSON(neg_web)neg_content[[i]] <- data.frame(referenceName = neg_result$comments$referenceName,nickname = neg_result$comments$nickname,creationTime = neg_result$comments$creationTime,content = neg_result$comments$content)message("neg_page ", i)Sys.sleep(2)
}str(pos_content)
pos_reviews <- Reduce(rbind, pos_content)
pos_reviews$type <- rep('pos', nrow(pos_reviews)) #标记好评
head(pos_reviews)neg_reviews <- Reduce(rbind, neg_content)
neg_reviews$type <- rep('neg', nrow(pos_reviews)) #标记差评
head(neg_reviews)reviews <- rbind.data.frame(pos_reviews, neg_reviews)
head(reviews)
# 将评论数据输出
write.csv(reviews, "./tmp/reviews.csv", row.names = FALSE)
LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。
本案例向读者展示了如何使用R语言处理电商文本评论数据。通过R语言进行案例数据爬取,对文本数据进行预处理,分词,去除停用词等操作,在知网情感词表上进行优化,进行基于词表的情感分析,最后使用LDA主题模型对正负面评论进行主题分析。
R语言对京东商品进行文本爬虫相关推荐
- R语言ggplot2可视化为长文本轴标签自动换行美化可视化结构实战:Wrap long text axis labels
R语言ggplot2可视化为长文本轴标签自动换行美化可视化结构实战:Wrap long text axis labels 目录
- 爬虫项目五:最详细的京东商品、评价爬虫、词云展示
文章目录 前言 一.京东商品信息爬虫 1.分析URL 2.实例化chrome 3.加载完整数据 4.实现翻页 5.解析数据 二.京东商品评价爬虫 1.找到接口 2.分析url 3.解析数据 4.词云 ...
- php 抓取京东搜索页,京东商品列表页爬虫采集方法 - 八爪鱼采集器
采集场景 在京东搜索页 https://search.jd.com/Search 输入关键词搜索,采集搜索后得到的多个商品列表数据. 鼠标放到图片上,右键,选择[在新标签页中打开图片]可查看高清大图 ...
- 【源码分享】京东商品评价的爬虫
/*使用javascript编写的爬虫源码,用于爬取京东商城上的商品信息和评论. 代码粘贴到神箭手云爬虫平台(http://www.shenjianshou.cn/)上就可以直接跑了,不需要安装编译环 ...
- 京东商品评论分析(爬虫+分词+词云图)
项目背景: 本文通过抓取京东某笔记本的评论数据,简单从几个维度进行分析,并制作用户评论的词云图. 爬取数据: 商品链接 通过对商品评论页面进行探索,发现评论数据是通过发送请求,然后从数据库调取此商品的 ...
- python爬取京东商品属性_python爬虫小项目:爬取京东商品信息
#爬取京东手机信息 import requests from bs4 import BeautifulSoup from selenium import webdriver import re imp ...
- 京东商品消费者评价爬虫
京东最近的反扒措施貌似有所升级,尤其对于ip的监测力度很大,不过好在有解决办法,下面来看看具体怎么操作: 一.网页分析 1.进入产品页面后,在商品介绍一栏,可以看到商品编号,此编号可作为后代码中的产品 ...
- mcem r语言代码_一个简单文本分类任务-EM算法-R语言
一.问题介绍 概率分布模型中,有时只含有可观测变量,如单硬币投掷模型,对于每个测试样例,硬币最终是正面还是反面是可以观测的.而有时还含有不可观测变量,如三硬币投掷模型.问题这样描述,首先投掷硬币A,如 ...
- 京东商品及评论爬虫(selenium)
代码查看https://gitee.com/MarkPolaris/reptile/tree/master/jd 中的gly和demo03 转载于:https://www.cnblogs.com/MC ...
- go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...
利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...
最新文章
- Java 逆序存放4位数
- OpenSAP网址收藏
- JAVA 1.2(原生数据类型 Primitive Data Type)
- JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】
- Jquery的toggle()与trigger()方法
- php bin2hex(),PHP bin2hex() 函数 pack() 函数
- Spring Boot 学习笔记(三)Spring boot 中的SSM
- xargs命令和find的-exec
- 由浅入深|让你彻底理解Python中的yield
- InstallShield 2008 终止声明 (EOL)对最终客户意味着什么
- java正则匹配双字节_Java 正则表达式详解(二)
- 图模型在信息流推荐系统中的原理和实践
- sqli-lab(8)
- [转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法...
- powerpc如何移植Linux系统,PowerPC平台 u-boot 移栽
- 项目过程中的部分逻辑
- python编程单词排序_Python:对输入的单词进行字典序排序输出
- 苹果iphone公交卡支持哪些城市(详细)
- FPGA产生m序列及其应用
- 非线性拟合(C++版)