博罗网站建设费用,信誉好的企业网站建设,企业网站管理系统设计与实现,行业数据分析网站文章目录 一、分析亚马逊的评论请求二、获取亚马逊评论的内容三、亚马逊评论信息的处理四、代码整合4.1 代理设置4.2 while循环翻页 总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具… 文章目录 一、分析亚马逊的评论请求二、获取亚马逊评论的内容三、亚马逊评论信息的处理四、代码整合4.1 代理设置4.2 while循环翻页 总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 上次亚马逊的商品信息都获取到了自然要看一下评论的部分。用户的评论能直观的反映当前商品值不值得购买亚马逊的评分信息也能获取到做一个评分的权重。 亚马逊的评论区由用户ID评分及评论标题地区时间评论正文这几个部分组成本次获取的内容就是这些。
测试链接https://www.amazon.it/product-reviews/B08GHGTGQ2/refcm_cr_arp_d_paging_btm_14?ieUTF8pageNumber14reviewerTypeall_reviewspageSize10sortByrecent
一、分析亚马逊的评论请求
首先打开开发者模式的NetworkClear清屏做一次请求 你会发现在Doc中的get请求正好就有我们想要的评论信息。
可是真正的评论数据可不是全部都在这里的页面往下翻有个翻页的button 点击翻页请求下一页在Fetch/XHR选项卡中多了一个新的请求刚才的Doc选项卡中并无新的get请求。这下发现了所有的评论信息是XHR类型的请求。 获取到post请求的链接和payload数据里面含有控制翻页的参数真正的评论请求已经找到了。 这一堆就是未处理的信息这些请求未处理的信息里面带有data-hook\review\的就是带有评论的信息。分析完毕下面开始一步一步去写请求。
二、获取亚马逊评论的内容
首先拼凑请求所需的post参数请求链接以便之后的自动翻页然后带参数post请求链接
headers {authority: www.amazon.it,accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,\*/\*;q0.8,application/signed-exchange;vb3;q0.9,user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36,
}page 1
post\_data {sortBy: recent,reviewerType: all\_reviews,formatType: ,mediaType: ,filterByStar: ,filterByLanguage: ,filterByKeyword: ,shouldAppend: undefined,deviceType: desktop,canShowIntHeader: undefined,pageSize: 10,asin: B08GHGTGQ2,
}
# 翻页关键payload参数赋值
post\_data\[pageNumber\] page,
post\_data\[reftag\] fcm\_cr\_getr\_d\_paging\_btm\_next\_{page},
post\_data\[scope\] freviewsAjax{page},
# 翻页链接赋值
spiderurlfhttps://www.amazon.it/hz/reviewsrender/ajax/reviews/get/refcm\_cr\_getr\_d\_paging\_btm\_next\_{page}
res requests.post(spiderurl,headersheaders,datapost\_data)
if res and res.status\_code 200:res res.content.decode(utf-8)print(res)现在已经获取到了这一堆未处理的信息接下来开始对这些数据进行处理。
三、亚马逊评论信息的处理
上图的信息会发现每一段的信息都由“”进行分隔而分隔之后的每一条信息都是由’“,”分隔开的 所以用python的split方法进行处理把字符串分隔成list列表
\# 返回值字符串处理
contents res.split()
for content in contents:infos content.split(,)由’“,”分隔的数据通过split处理生成新的list列表评论内容是列表的最后一个元素去掉里面的\“,”\n和多余的符号就可以通过css/xpath选择其进行处理了
for content in contents:infos content.split(,)info infos\[-1\].replace(\],).replace(\\\\n,).replace(\\\\,)# 评论内容判断if data-hookreview in info:sel Selector(textinfo)data {}data\[username\] sel.xpath(//span\[classa-profile-name\]/text()).extract\_first() #用户名data\[point\] sel.xpath(//span\[classa-icon-alt\]/text()).extract\_first() #评分data\[date\] sel.xpath(//span\[data-hookreview-date\]/text()).extract\_first() #日期地址data\[review\] sel.xpath(//span\[data-hookreview-title\]/span/text()).extract\_first() #评价标题data\[detail\] sel.xpath(//span\[data-hookreview-body\]).extract\_first() #评价内容image sel.xpath(div\[classreview-image-tile-section\]).extract\_first()data\[image\] image if image else not image #图片print(data)四、代码整合
4.1 代理设置
稳定的IP代理是你数据获取最有力的工具。目前国内还是无法稳定的访问亚马逊会出现连接失败的情况。我这里使用的ipidea代理请求的意大利地区的亚马逊可以通过账密和api获取代理速度还是非常稳定的。
地址http://www.ipidea.net/?utm-sourcecsdnutm-keyword?wb
下面的代理获取的方法
\# api获取ipdef getApiIp(self):# 获取且仅获取一个ip------意大利api\_url 获取代理地址res requests.get(api\_url, timeout5)try:if res.status\_code 200:api\_data res.json()\[data\]\[0\]proxies {http: http://{}:{}.format(api\_data\[ip\], api\_data\[port\]),https: http://{}:{}.format(api\_data\[ip\], api\_data\[port\]),}print(proxies)return proxieselse:print(获取失败)except:print(获取失败)4.2 while循环翻页
while循环进行翻页评论最大页数是99页99页之后就break跳出while循环 def getPLPage(self):while True:# 翻页关键payload参数赋值self.post\_data\[pageNumber\] self.page,self.post\_data\[reftag\] fcm\_cr\_getr\_d\_paging\_btm\_next\_{self.page},self.post\_data\[scope\] freviewsAjax{self.page},# 翻页链接赋值spiderurl fhttps://www.amazon.it/hz/reviews-render/ajax/reviews/get/refcm\_cr\_getr\_d\_paging\_btm\_next\_{self.page}res self.getRes(spiderurl,self.headers,,self.post\_data,POST,check)#自己封装的请求方法if res:res res.content.decode(utf-8)# 返回值字符串处理contents res.split()for content in contents:infos content.split(,)info infos\[-1\].replace(\],).replace(\\\\n,).replace(\\\\,)# 评论内容判断if data-hookreview in info:sel Selector(textinfo)data {}data\[username\] sel.xpath(//span\[classa-profile-name\]/text()).extract\_first() #用户名data\[point\] sel.xpath(//span\[classa-icon-alt\]/text()).extract\_first() #评分data\[date\] sel.xpath(//span\[data-hookreview-date\]/text()).extract\_first() #日期地址data\[review\] sel.xpath(//span\[data-hookreview-title\]/span/text()).extract\_first() #评价标题data\[detail\] sel.xpath(//span\[data-hookreview-body\]).extract\_first() #评价内容image sel.xpath(div\[classreview-image-tile-section\]).extract\_first()data\[image\] image if image else not image #图片print(data)if self.page 99:print(Next Page)self.page 1else:break最后的整合代码
\# codingutf-8
import requests
from scrapy import Selectorclass getReview():page 1headers {authority: www.amazon.it,accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,\*/\*;q0.8,application/signed-exchange;vb3;q0.9,user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36,}post\_data {sortBy: recent,reviewerType: all\_reviews,formatType: ,mediaType: ,filterByStar: ,filterByLanguage: ,filterByKeyword: ,shouldAppend: undefined,deviceType: desktop,canShowIntHeader: undefined,pageSize: 10,asin: B08GHGTGQ2,#post\_data中asin参数目前写死在#https://www.amazon.it/product-reviews/B08GHGTGQ2?ieUTF8pageNumber1reviewerTypeall\_reviewspageSize10sortByrecent#这个链接里不排除asin值变化的可能如要获取get请求即可def getPLPage(self):while True:# 翻页关键payload参数赋值self.post\_data\[pageNumber\] self.page,self.post\_data\[reftag\] fcm\_cr\_getr\_d\_paging\_btm\_next\_{self.page},self.post\_data\[scope\] freviewsAjax{self.page},# 翻页链接赋值spiderurl fhttps://www.amazon.it/hz/reviews-render/ajax/reviews/get/refcm\_cr\_getr\_d\_paging\_btm\_next\_{self.page}res self.getRes(spiderurl,self.headers,,self.post\_data,POST,check)#自己封装的请求方法if res:res res.content.decode(utf-8)# 返回值字符串处理contents res.split()for content in contents:infos content.split(,)info infos\[-1\].replace(\],).replace(\\\\n,).replace(\\\\,)# 评论内容判断if data-hookreview in info:sel Selector(textinfo)data {}data\[username\] sel.xpath(//span\[classa-profile-name\]/text()).extract\_first() #用户名data\[point\] sel.xpath(//span\[classa-icon-alt\]/text()).extract\_first() #评分data\[date\] sel.xpath(//span\[data-hookreview-date\]/text()).extract\_first() #日期地址data\[review\] sel.xpath(//span\[data-hookreview-title\]/span/text()).extract\_first() #评价标题data\[detail\] sel.xpath(//span\[data-hookreview-body\]).extract\_first() #评价内容image sel.xpath(div\[classreview-image-tile-section\]).extract\_first()data\[image\] image if image else not image #图片print(data)if self.page 99:print(Next Page)self.page 1else:break# api获取ipdef getApiIp(self):# 获取且仅获取一个ip------意大利api\_url 获取代理地址res requests.get(api\_url, timeout5)try:if res.status\_code 200:api\_data res.json()\[data\]\[0\]proxies {http: http://{}:{}.format(api\_data\[ip\], api\_data\[port\]),https: http://{}:{}.format(api\_data\[ip\], api\_data\[port\]),}print(proxies)return proxiesprint(获取失败)except:print(获取失败)#专门发送请求的方法,代理请求三次三次失败返回错误def getRes(self,url,headers,proxies,post\_data,method):if proxies:for i in range(3):try:# 传代理的post请求if method POST:res requests.post(url,headersheaders,datapost\_data,proxiesproxies)# 传代理的get请求else:res requests.get(url, headersheaders,proxiesproxies)if res:return resexcept:print(f第{i1}次请求出错)else:return Noneelse:proxies self.getApiIp()# 请求代理的post请求res requests.post(url, headersheaders, datapost\_data, proxiesproxies)# 请求代理的get请求res requests.get(url, headersheaders, proxiesproxies)print(f第{i1}次请求出错)
if \_\_name\_\_ \_\_main\_\_:getReview().getPLPage()总结
本次的亚马逊评论获取就是两个坑一是评论信息通过的XHR请求方式二是评论信息的处理。 分析之后这次的数据获取还是非常简单的找到正确的请求方式稳定的IP代理让你事半功倍找到信息的共同点进行处理问题就迎刃而解了。 关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料给那些想学习 Python 的小伙伴们一点帮助
保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 一、Python所有方向的学习路线
Python所有方向的技术点做的整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
二、Python基础学习视频
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈 因篇幅有限仅展示部分资料
三、精品Python学习书籍
当我学到一定基础有自己的理解能力的时候会去阅读一些前辈整理的书籍或者手写的笔记资料这些笔记详细记载了他们对一些技术点的理解这些理解是比较独到可以学到不一样的思路。
四、Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
五、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
六、Python兼职渠道
而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】