python爬虫+分析!手机之间的对决

3 篇文章 0 订阅
2 篇文章 0 订阅
  • 有没有遇到过,在网上购物的时候,经常下不了手呢?买前老会先看评分,然后看评论一看就是几十页,上百页。恨自己阅读能力不行哈?最后还是放回购物车!现在python分析来了,帮你轻松处理购物商品,当然钱要自己掏 - -!。

爬虫模块

  • first:数据来源,京东商品评论
    咱们来分析一波把,老规矩还是要炒一下冷饭,京东商城评论的数据是以json返回的,打开google浏览器,进入开发者模式上图
    在这里插入图片描述
    其实现在基本的网站数据都是异步加载进来的。这里再啰嗦几句,你可以复制这段url用浏览器打开是可以访问的。
    如果类似这种呢,你看一下在这里插入图片描述
    如果你遇到这种url是被处理过的,带了特么多的参数,而且是访问不了的,每次刷新url的参数就会改变,这种不是要绝人之路吗?现在我告诉你,方法在数据森麟公众号里面有,爬链家房子的时候,那种slenium自动化爬虫就no problem!

  • 接下来我们看一下京东商品json请求头在这里插入图片描述
    我们首先来分析,完成后继续构造一下请求地址,并且使用GET请求方法,这时候你要学会找规律

  url_header = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv14678&productId=100000822981&score=0&sortType=5&page='
  url_tail = '&pageSize=10&isShadowSku=0&rid=0&fold=1'
  page = "这是第几页的意思"

完成的请求地址其实就是url_header+page+url_tail,然后就是…

for page in range(20):
	url_mate20 = url_header+str(page)+url_tail
	res = requests.get(url_mate20,headers=headers)
	json_data = res.text
	#对json数据处理,前期记得 import json,需要对返回的json数据预先处理好
	 #很多新手对json数据比较笼统的可以先大致了解一下json的格式
	 json_load = json.loads(json_data[27:-2])
	comment = (json_load['comments'])
	#把评论内容遍历完后保存到本地的“txt”文件中,
		for com_data in comment:
			#根据自己的文件路径保存,注意带参数"a",如果是w就会覆盖原有内容,这样子你只能得一条评论
			JD_mate20 = open('C:\\Users\\chineon\\Desktop\\JD_mate20.txt','a')
			JD_mate20.write('%s\n'%com_data['content'])
			JD_mate20.close()
			#你可以不用打印出来,可有可无
			print(com_data['content'])

这样子抓取京东商城 华为mate20 的手机20页评论内容就over了
代码太短了,不好意思交差啊。那我们就写个多进程把,同时运行三个
在这里插入图片描述
其实这两个是一样得方法,接下来我就来写个多进程,前期记得from multiprocessing import Process
这里利用Process的start()方法

if __name__ == '__main__':
    mate_20 = Process(target=JD_mate20)     #进程
    iphonex = Process(target=JD_iphoneX)    #进程
    redmi_8 = Process(target=JD_redmi8)     #进程
    mate_20.start()
    iphonex.start()
    redmi_8.start()

运行一下程序,iphonex,mate20,小米8得手机评论就OK了,爬虫这时候就告一段落哈!

分析模块

说实话,对于分析我还是初懂,因为平常工作有闲暇的空子,就多学习了一波,前段时间还因为多维数组的问题搞到半夜去了,多学习是好的,建议大家要入门的先看免费教程,不花钱,学习的东西也不少,有时候人家是过来人就会多多少少有其他的见解,就像这“两人骑驴的故事”。

  • 进入正题
    数据已经有了,当时光有源数据是不行,还得以可视化得方式展示出来,这次我采用词云的形式展示给大家,东西好坏评价不是一个人说了算的,所以数据越多就越准确。我把图片截图下来了,先来看一下展示的结果把
    在这里插入图片描述

  • 首先看iphonex,用户评论频繁出现的关键词“运行速度”,“面部识别”,“电池续航”,“非常满意”,等的大字体,说明苹果手机的性能跟智能真的不是吹的哦,还有就是大家注意到没有?“京东物流”,看来京东物流也不是盖的,这个主要还是京东根据各地区而建设的仓库也是分不开的。

  • 其次看华为的mate20,用户评论频繁出现的“系统流畅”,“拍照效果”,“性能强悍”,“后置指纹”,“运行速度”,还有游戏。确实是国产手机top1,不比iPhone差多少,而且适用的人群广,无论是游戏达人,拍照达人,高逼格达人都非常的适合。

  • 最后看小米8,用户评论频繁出现的“手机”,“不错”,“性价比”,“拍照”等。确实跟前两位大哥相比,有点力不从心,这次没看到关键词“发烧”有点说不过去,当然小米也是很受大众喜爱的。

  • 接下来就看一下怎么来生成词云

我用的matplotlib,以及jieba跟wordcloud,如果你的环境没有安装的提前安装一下,
windows打开命令行使用pip来安装,偶尔可能有些同学装了python然而没配置环境变量的就会报错,这方面对刚开始学习python的同学提醒一下。

首先打开文件

#读取爬虫保存下载的数据
file_text = open('C:\\Users\\85106\\Desktop\\JD_spiders\\JD_xiaomi8.txt','r').read()
#再使用jieba来处理剪切我们爬取文本内容
cut_text = jieba.cut(file_text)
#继续处理对剪过的文本以空格拼接起来,注意一下这里“”有空格的
result = " ".join(cut_text)

接下来就是词云效果的设置了,

wc = WordCloud(
    font_path='simhei.ttf',     #字体的路劲
    background_color='black',   #背景颜色
    width=1200,
    height=600,
    max_font_size=150,            #字体的大小
    min_font_size=30,			  #字体的大小
    max_words=1000
)

然后就是展示,保存了

w_cloud.generate(result)
w_cloud.to_file('xiaomi8_wordcloud.png')    #图片保存

#图片展示
plt.figure('xiaomi8')   #图片显示的名字,根据自己来定义
plt.imshow(w_c)
plt.axis('off')        #关闭坐标
plt.show()

大功告成,现在就很清晰知道人们对不同手机的评论频繁出现的次数,字体越大表示越多。
最后还是要提醒一下:如果你想抓取京东商城的更多评论,例如100页,1000页,最好是请求不要太频繁,防止被封,出现请求成功但是不返回数据的情况,过段时间又可以恢复访问
在这里插入图片描述
在这里插入图片描述
一般同学,就会想,那我就在我的代码中添加time.sleep()让程序睡眠呗,请求不要太快就行,没错,这可能也行,但是如果在真实工作中,老板要让你明天交付5000万数据或者更多呢?

  • 这时候我们就要来使用代理了,这时有人就说封MAC地址呢?那我们就搭建多台机器呗!别忘了我可是运维工程师,方法总会有的。哈哈

获取代理,我是用的是芝麻HTTP
这也是我在百度上搜来的,不是打广告,这家代理操作很简单 我贴个代码出来让大家看一下

def get_proxy():
	#在服务商的官网获取的API接口,然后就提供一个URL给你,我这个是免费的
    url = 'http://webapi.http.zhimacangku.com/getip?num=20&type=3&pro=0&city=0&yys=0&port=11&pack=39821&ts=0&ys=0&cs=0&lb=2&sb=0&pb=45&mr=1&regions='
    #发起请求
    responses = requests.get(url)
    html_ip = responses.text
    #对返回的HTML格式处理一下
    ip_list = html_ip.split('</br>')
    #随机抽取一个代理IP
    #proxy_ip = random.choice(ip_list)
    #可以自己打印出来看一下
    print(ip_list)
  

在这里插入图片描述
这样就获得带端口的代理IP了,简单吧!这些免费代理IP有时限!可以自己去看一下,我记得是IP使用的时候就开始计时。
整篇文章就写到这里,感谢阅读,有不好的地方望多多指教一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值