爬取京东商品评论 Python 3 urllib.request pandas jieba

环境说明:

Windows 10 、Python3 、idea

注意事项:

windows下 多个Python版本共存及多个版本之间的库安装方式;

代码中jieba库的引用错误,怎么解决?在安装目录把jieba拷贝到项目根目录|或者使用sys引入绝对路径

坑-京东商品评论数据超过1万条,只显示前1000条,其它数据是爬取不到的,但可以增量定时爬取:


爬取京东商品评论 Python 3 urllib.request pandas jieba_第1张图片

windows 10 下 多个python版本的安装:

https://www.python.org/

官网找到你想要的Python版本,安装即可,此处不再多说;

多个版本的环境配置几乎在windows下不用怎么配置,在安装过程中有勾选是否配置环境变量,勾选就好!

多个版本之间的pip安装,同样需要去官网https://pypi.org/project/pip/

下载完之后,执行的时候需要通过不同的python版本去执行;

比如:py2 -m 解压完的pip目录中的setup.py

比如:py3 -m 解压完的pip目录中的setup.py



pip更新:

py2 -m pip install --upgrade pip

py3 -m pip install --upgrade pip

pip 安装完之后,每个版本安装个自己的package如下:

py2 -m pip install xxpackage

py3 -m pip install xxpackage



爬取 京东 商品 评论 Python3 :

https://blog.csdn.net/uvyoaa/article/details/80575503



结巴分词:

目的是找出评论中的关键词及关键词出现的频率;

将爬取的csv 灌入mongodb

# -*- coding: utf-8 -*-

import os

import pandas as pd

from pymongo import MongoClient

import csv

import json

mongo_url='0.0.0.0:27018'

DB = 'jd'

Con = 'data'

path = "C:/test/jd" #文件夹目录

Client = MongoClient(mongo_url)

db_mongo = Client[DB]

files= os.listdir(path) #得到文件夹下的所有文件名称

s = []

for file in files: #遍历文件夹

    if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开

        # f = open(path+"/"+file); #打开文件

        # 读取csv至字典

        csvFile = open(path+"/"+file, "r")

        reader = csv.reader(csvFile)

        for item in reader:

            # 建立空字典

            result = {}

            # 忽略第一行

            if reader.line_num == 1:

                continue

            result['comment_id'] = item[1]

            result['product_id'] = item[2]

            result['guid'] = item[3]

            result['content'] = item[4].replace('\n', '').replace(':', '').replace(':', '')

            result['create_time'] = item[5]

            result['reference_id'] = item[6]

            result['reference_time'] = item[7]

            result['score'] = item[8]

            result['nickname'] = item[9]

            result['user_level'] = item[10]

            result['is_mobile'] = item[11]

            result['user_client'] = item[12]

            jsonStr = json.dumps(result)

            jsonStr = json.loads(jsonStr)

            db_mongo[Con].insert(jsonStr)

        csvFile.close()

        print(result)

print(s) #打印结果

将mongodb中的评论数据进行分词导出:

# -*- coding: UTF-8 -*-

import pandas as pd

import jieba

import jieba.analyse

from pymongo import MongoClient

mongo_url='0.0.0.0:27018'

DB = 'jd'

Con = 'data'

#设置pd的显示长度

pd.set_option('max_colwidth',500)

#载入数据

# rows=pd.read_csv('datas1.csv', header=0,encoding='utf-8',dtype=str)

segments = []

client = MongoClient(mongo_url)

db_mongo = client[DB]

for u in db_mongo[Con].find({}):

    content = u['content']

    #TextRank 关键词抽取,只获取固定词性

    words = jieba.analyse.textrank(content, topK=50,withWeight=False,allowPOS=('ns', 'n', 'vn', 'v'))

    splitedStr = ''

    for word in words:

        # 记录全局分词

        segments.append({'word':word, 'count':1})

        splitedStr += word + ' '

dfSg = pd.DataFrame(segments)

# 词频统计

dfWord = dfSg.groupby('word')['count'].sum()

#导出csv

dfWord.to_csv('keywords.csv',encoding='gbk')

你可能感兴趣的:(爬取京东商品评论 Python 3 urllib.request pandas jieba)