环境说明:
Windows 10 、Python3 、idea
注意事项:
windows下 多个Python版本共存及多个版本之间的库安装方式;
代码中jieba库的引用错误,怎么解决?在安装目录把jieba拷贝到项目根目录|或者使用sys引入绝对路径
坑-京东商品评论数据超过1万条,只显示前1000条,其它数据是爬取不到的,但可以增量定时爬取:
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')