python爬取京东一款手机的评论!零基础入门第一节!

前言

最近做了一个京东手机数据分析,从JD爬了一些手机的数据,这里简单介绍一下爬取手机评论的部分。


一、准备信息

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

 

首先我们准备的数据有:

  1. 已知手机的id,可以根据京东上一款手机的网址查询得到。
  2. 评论所在的url:

           利用google chrome打开网站,右键“检查”,找到Network选项,然后刷新页面,点击商品评价,等待服务器向页面传递参数。
          找到productPageComments点击,就会在右边Header中找到评论网址。

          同时在header中也有cookie参数,将cookie参数复制到下面的代码相应位置。

将上述参数准备好后,可以运行下面代码

  • 手机id
  • 评论url网址
  • cookie

二、详细代码

#胖虎Johnny
#2020.11.10
import urllib.request
import json
import random
import time as time0
import re,os
import pandas as pd

#设置代理
agents = [
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]

def product_reviews(product_id = None,p = 0,maxPage = 99):
    root_dir='京东手机评论_详细字典'
    #判断之前是否爬取过这个型号手机的评论(一种型号的手机,颜色和内存不同,但评论共享)
    os.makedirs(root_dir,exist_ok=True)
    phone_list=os.listdir(root_dir)
    phone_txt=str(product_id)+'.txt'
    if phone_txt in phone_list:
        print(product_id)
        return []

    #对每一页循环爬取
    #"maxPage": 45
    k_head=0
    while p0:
            # print(comments)
            for comment in comments:
                # print(comment)
                name = comment['referenceName']

                id = comment['id']

                con = comment['content']

                time = comment['creationTime']

                img_url = comment['userImageUrl']

                score=comment['score']

                likes=comment['usefulVoteCount']

                replyCount=comment['replyCount']

                try:
                    productColor = comment['productColor']
                except:
                    productColor = ''

                try:
                    productSize = comment['productSize']
                except:
                    productSize = ''

                item = {
                    'name': name,
                    'id': id,
                    'score': score,
                    'con': con,
                    'time': time,
                    'productColor':productColor,
                    'productSize':productSize,
                    'likes': likes,
                    'replyCount': replyCount,
                    'img_url': img_url,
                }
                item.update(dict_pars_info)
                #print(item)
                string = str(item)

                # 1.保存为csv格式
                item_dataframe = pd.DataFrame([item])
                #print(item_dataframe)
                if k_head==0:
                    item_dataframe.to_csv(root_dir+'/%d.csv' % product_id,mode='w',header=True,index=False,encoding='gbk')
                    k_head+=1
                else:
                    item_dataframe.to_csv(root_dir+'/%d.csv' % product_id,mode='a',header=False,index=False,encoding='gbk')

                #2.保存成txt
                fp = open(root_dir+'/%d.txt' % product_id, 'a', encoding='gbk')
                fp.write(string + '\n')
                fp.close()
            print('%s-page---finish(%s/%s)' % (p,p,maxPage))
        else:
            return []
        p=p+1

if __name__ == '__main__':
    phone_id = 100008348542
    product_reviews(product_id=phone_id)

三、结果

       我们将结果保存到csv文件中,同时也保存了一个字典类型的txt文件。数据都储存在当前新建的文件夹下——京东手机评论_详细字典。

python爬取京东一款手机的评论!零基础入门第一节!_第1张图片


可以看到csv中爬取的数据如上图展示,具体参数包括:

  • 评论
  • 评论id
  • 点赞数
  • 手机名称
  • 颜色
  • 版本
  • 用户评分
  • 评价时间
  • 回复数量

       注意,最后八个参数,从中评数开始,一直到最后的默认评论数,都是这一款手机的数据,因此每个csv文件中,最后八个数据是相同的。

四、更多

       上述代码只是针对一款手机,若是想要python更多手机的评论,则需要先爬取每一款手机的id,之后循环对id进行遍历即可。

 

你可能感兴趣的:(Python,python,大数据,机器学习,数据挖掘)