第二十二篇,爬虫爬取亚马逊商品评论及评分用可视化方式显示

您所在的位置:网站首页 卖家评价内容怎么写 第二十二篇,爬虫爬取亚马逊商品评论及评分用可视化方式显示

第二十二篇,爬虫爬取亚马逊商品评论及评分用可视化方式显示

#第二十二篇,爬虫爬取亚马逊商品评论及评分用可视化方式显示| 来源: 网络整理| 查看: 265

首先先观察网页:

不锈钢水杯不锈钢水杯

先获取十页评论看看能不能获取的到,别忘了导入我们所需要的框架:

import requests from lxml import etree import re import matplotlib.pylab as plt headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Cookie': 'x-wl-uid=1DVw4k4T/jAduWIfwW2jvf029Ha4Bgv/AJGjP/yRfJTdq26dr7oDdeEBdb6zOPUl0ByfsaKJ3GUY=; session-id-time=2082729601l; session-id=457-7649276-4174543; csm-hit=tb:DAHATSQRZZBWHWD4ZXYP+s-T61YJHRDEC6Y6S2VMTVZ|1573355007668&t:1573355007668&adb:adblk_no; ubid-acbcn=459-2457809-1906210; session-token="4sZGQQPKw9CJUOzJFLsTdS3FtlpqIyp0hyvhXL6RMOchbDf7p7YLDEL90YFps2Hl80fBT6uPmzQ00meCLYxsrjuoabX3+kz7OB+CLw8GaAYZB8J9oBBcJLBUsGs6LLm/EHQht5Tm0IpOKR0hz0GGtATgcpJXDfRoEdvNol+CUc3mXOMA5KmEfFWstdV+KwyzSGrGW+DdrAftisgZMl2stffIdhcOLh53B4tJwsR5awKqPrOqZF8uJg=="; lc-acbcn=zh_CN; i18n-prefs=CNY' } #添加headers模拟浏览器防止被发现 def parge_page(url): response = requests.get(url=url,headers=headers) #print(response) 测试一下看看也没有请求到网页 def main(): for x in range(10): #获取100条评论,一页10条 url = 'https://www.amazon.cn/product-reviews/B074MFRPWL/?pageNumber='+ str(x) #网站:TIGER 虎牌 水壶 直饮水杯 迷你不锈钢水杯 #url = 'https://www.amazon.cn/product-reviews/B01N5WPXA7/?pageNumber=' +str(x) #网站:Tiger 600 毫升水瓶带直饮水杯,2 WAY 不锈钢水壶配袋 parge_page(url) if __name__ == '__main__': main() #调用main方法

之后查看网页源代码,使用xpath获取到我们需要的数据,再用matplotlib将数据可视化出来,最终代码及注释:

import requests from lxml import etree import re import matplotlib.pylab as plt headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Cookie': 'x-wl-uid=1DVw4k4T/jAduWIfwW2jvf029Ha4Bgv/AJGjP/yRfJTdq26dr7oDdeEBdb6zOPUl0ByfsaKJ3GUY=; session-id-time=2082729601l; session-id=457-7649276-4174543; csm-hit=tb:DAHATSQRZZBWHWD4ZXYP+s-T61YJHRDEC6Y6S2VMTVZ|1573355007668&t:1573355007668&adb:adblk_no; ubid-acbcn=459-2457809-1906210; session-token="4sZGQQPKw9CJUOzJFLsTdS3FtlpqIyp0hyvhXL6RMOchbDf7p7YLDEL90YFps2Hl80fBT6uPmzQ00meCLYxsrjuoabX3+kz7OB+CLw8GaAYZB8J9oBBcJLBUsGs6LLm/EHQht5Tm0IpOKR0hz0GGtATgcpJXDfRoEdvNol+CUc3mXOMA5KmEfFWstdV+KwyzSGrGW+DdrAftisgZMl2stffIdhcOLh53B4tJwsR5awKqPrOqZF8uJg=="; lc-acbcn=zh_CN; i18n-prefs=CNY' } #添加headers模拟浏览器防止被发现 hao = [] zhong = [] cha = [] #获取到的评论数存入里面 def parge_page(url): response = requests.get(url=url,headers=headers) #print(response) #测试一下看看也没有请求到网页 text = response.text html = etree.HTML(text) quan = html.xpath('//div[@id="cm_cr-review_list"]/div') #获取到每个人的评论 for i in quan: pinfen1 = i.xpath('.//span[@class="a-icon-alt"]/text()') #获取到每个人的评分几颗星 pinlun = i.xpath('.//a[@data-hook="review-title"]/span/text()') #获取到每个人评论的字 #print(pinlun) for pinfen in pinfen1: #print(pinlun) a = re.sub('颗星,最多 5 颗星','',pinfen) #使用正则把后面不用的字符串替换为空,显得好看 #print(a) list = {'评论':pinlun,'评分': a} print(list) if a 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Cookie': 'x-wl-uid=1DVw4k4T/jAduWIfwW2jvf029Ha4Bgv/AJGjP/yRfJTdq26dr7oDdeEBdb6zOPUl0ByfsaKJ3GUY=; session-id-time=2082729601l; session-id=457-7649276-4174543; csm-hit=tb:DAHATSQRZZBWHWD4ZXYP+s-T61YJHRDEC6Y6S2VMTVZ|1573355007668&t:1573355007668&adb:adblk_no; ubid-acbcn=459-2457809-1906210; session-token="4sZGQQPKw9CJUOzJFLsTdS3FtlpqIyp0hyvhXL6RMOchbDf7p7YLDEL90YFps2Hl80fBT6uPmzQ00meCLYxsrjuoabX3+kz7OB+CLw8GaAYZB8J9oBBcJLBUsGs6LLm/EHQht5Tm0IpOKR0hz0GGtATgcpJXDfRoEdvNol+CUc3mXOMA5KmEfFWstdV+KwyzSGrGW+DdrAftisgZMl2stffIdhcOLh53B4tJwsR5awKqPrOqZF8uJg=="; lc-acbcn=zh_CN; i18n-prefs=CNY' }

然后导入我们的request模块,没有就pip install模块名或者setting里面自行直接下载,导入代码:import requests 然后使用一个response来接收url与headers,因为我们观察到这个网页是一个get请求的方式所以我们的代码就是: response = requests.get(url=url,headers=headers) 直接:print(response)看看相应是否成功输出: 表示已经成功了,因为我们要获取到100条评论,一页只有十条,很简单,网址中点击下一页找规律,发现就后面多了一个:?pageNumber=页数’,这里使用一个for循环:for x in range(10): #获取100条评论,一页10条 url = ‘https://www.amazon.cn/product-reviews/B074MFRPWL/?pageNumber=’+ str(x) 这样就可以获取到10页的网站。

第三步,爬取网页:

在这里插入图片描述 网站我们页获取到了,接下来就是查看网页内容直接F12查看我们要获取的信息: 导入lmxl模块:from lxml import etree,没有就参考上面自行下载 先用个text接收一下我们获取到的网页:text = response.text 之后将它们转换为html的格式传给变量html接收:html = etree.HTML(text) 再使用xpath的方法通过属性id获取到十条评论数的所有信息:quan = html.xpath(’//div[@id=“cm_cr-review_list”]/div’) 然后再使用for循环遍历再用xpath到评论及几颗星 for i in quan: pinfen1 = i.xpath(’.//span[@class=“a-icon-alt”]/text()’) #获取到每个人的评分几颗星 pinlun = i.xpath(’.//a[@data-hook=“review-title”]/span/text()’) #获取到每个人评论的字 输出一下评分:print(pinfen1):[‘3.0 颗星,最多 5 颗星’]… 输出一下评论:print(pinlun):[‘颜色特别,杯子轻巧’]… 发现评分后面那几个字符串是多余的,咱就使用正则把它给替换掉,因为它现在类型是一个列表,我们就要使用for循环遍历一下: for pinfen in pinfen1: a = re.sub(‘颗星,最多 5 颗星’,’’,pinfen) 这里面别忘了导入模块:import re,没有就照上面方法下载 这里不知道里面传递什么的可以参考一下帮助文档:sub(pattern, repl, string, count=0, flags=0)。我们第一个传递的是需要替换的字符串,第二个是替换为什么,我们这里是替换为空,第三个就是传递进去的参数。 之后输出一下看看也没有替换成功:print(pinfen):3.0 …。明显输出成功了 之后我们使用一个list来接收一下:list = {‘评论’:pinlun,‘评分’: a} 上面就是一个key,value类型的字典。 别忘了我们还要分类这些评论好评中评及差评: 这里先在全局里面创建三个空的列表再使用一个if判断来实现,小于2.0星的为差评。小于4。0星的为中评,否则为好评代码将它们用append方法传入代码如下:

hao = [] zhong = [] cha = [] #获取到的评论数存入里面 if a


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3