目录

闲言

成果

​填坑

网址详解

代码

数据库:data_sql.py

源码

乱语


闲言

这几天忙的要老命啊,天天上网课,5,6个平台手机电脑电视全开,一整天盯着显示屏,我觉得迟早要崩溃,不仅如此,在学校上课基本没什么作业,一上网课就:你的作业即将过期,请及时完成。。。好了,吐槽不说了,忙中抽点闲,前两天弄的东西现在写一写,虽然网上有一堆大神有写这个东西,但是我喜欢折腾,就把我自己踩的坑来写一写。

成果

小声嘀咕:形状是雷大佬的图片。๑乛◡乛๑

填坑

一开始我是想着直接获取网页试试,不出意外啥都没有,不过也很好理解,毕竟大网不可能用这么简单的鼠标右键查看网页源代码就能看到,其实我们平时直接requests获取到的网页就是跟鼠标右键查看网页源代码看到的一样,所以以后如果做这种事我们就可以先了解一下网站构成,也就是鼠标右键查看网页源代码,不然有时候真的瞎忙活。

接着呢我又尝试了selenium动态获取,成是成功了,只不过每页获取到的只是一个评论,也许是我的方法错了,代码就不贴了,太拙劣了。我在这差不多耗了整整一个小时的时间,那会真的头都大了,不过我还是发现了火狐的F12的一个好用处,竟然可以直接获取到Xpath路径,直接点击标签然后鼠标右键copy就有个copy Xpath还有其他一些方法,可能是我太蠢了吧现在才发现,不过好像不太晚,哈哈哈哈哈。

最后没办法去找了一下,发现还真是自己太蠢了,其实网上已经有一堆了,受该作者的启发我又把之前的源码全部删去(心疼),然后又折腾了一下午搞了下面这份,源码已经有很好的注释了,就不再去写思路了,终于完结了!!*★,°*:.☆\( ̄▽ ̄)/$:*.°★*。撒花!

网址详解

https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100011199522&score=1&sortType=6&page=0&pageSize=10&isShadowSku=0&fold=1

返回模式:callback    商品id:productId=100011199522
评论方式:score=0全部   1差评   2中评  3好评   5追评
排序方式:sortType=5 推荐排序   6时间排序
页面:page=0
一页多少评论:pageSize=10
未知:isShadowSku=0
未知:fold=1

代码

数据库:data_sql.py

# -*- coding:utf-8 -*-
import sqlite3#创建数据库
def thing_opendb():conn = sqlite3.connect("JD_date.db")cur = conn.execute("""create table if not exists comments_info(productName varchar(126),commentTime char(30),content varchar(512))""")return cur,conn#  往数据库中添加内容
def thing_insertData(productName,commentTime,content):hel = thing_opendb()hel[1].execute("insert into comments_info(productName,commentTime,content)values (?,?,?)",(productName,commentTime,content))hel[1].commit()hel[1].close()#   删除数据库中的全部内容
def thing_delalldb():hel = thing_opendb()              # 返回游标connhel[1].execute("delete from comments_info")print("删库跑路Cxk我最帅")hel[1].commit()hel[1].close()#查询全部内容
def thing_slectTable():hel = thing_opendb()cur = hel[1].cursor()cur.execute("select * from comments_info")res = cur.fetchall()#for line in res:#for h in line:#print(h),#print(line)return rescur.close()
#查询全部评论信息
def thing_slectComment():hel = thing_opendb()cur = hel[1].cursor()cur.execute("select content from comments_info")res = cur.fetchall()#for line in res:#for h in line:#print(h),#print(line)return rescur.close()

源码

import requests
import re
import time
import json
#数据库
from date_sql import *
#词云库
from wordcloud import WordCloud
import PIL .Image as image
import numpy as np
def get_comment(url):r = requests.get(url).contenttext=r.decode('gbk')#获取返回的json数据# print(text)data=text#返回的并不是字典,我们要先处理一下,把无用字符去除,留下字典data1=data.replace("fetchJSON_comment98(", "");data2=data1.replace(");", "");# print(data2)data = json.loads(data2)#data1的内容为一个字典,用{}括起来的内容#字典清洗,提取comments内容for i in data['comments']:#商品名称productName = i['referenceName']#评论时间commentTime = i['creationTime']#评论内容content = i['content']#将数据插入数据库保存thing_insertData(productName,commentTime,content)print('ok')#我爬取的时候总共0-35页每页10条数据 36页还有2条就不要了
#分批获取,防止封本人是0,11---11,21---21,35
for i in range(21,35):number=str(i)url = "https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100011199522&score=1&sortType=6&page=%s&pageSize=10&isShadowSku=0&fold=1"%numberget_comment(url)#防止封,加定时,每隔1秒获取一页time.sleep(1)print('爬取完成')
# 查询总共几条数据
a=thing_slectTable()
print(len(a))
# print(a)
#从数据库获取全部评论
b=thing_slectComment()
print(len(b))
# print(b)
#将数据写入txt文件
file = open('jingdongComments.txt','w')
for i in b:#暴力去掉无用字符写入txt文件strs=str(i)[2:][:-2].replace("\n", "")strs=strs.replace("…", "")strs=strs.replace("rdquo", "")strs=strs.replace("ldquo", "")strs=strs.replace("运行速度", "")strs=strs.replace("拍照效果", "")strs=strs.replace("待机时间", "")strs=strs.replace("外形外观", "")strs=strs.replace("其他特色", "")strs=strs.replace("屏幕音效", "")strs=strs.replace("n", "")file.write(strs)
file.close()
print('写入ok')
#读取txt文件
with open("jingdongComments.txt") as fp:text=fp.read()# 将文本放入WordCoud容器对象中并分析# 词云图片mask = np.array(image.open("2.jpg"))#字体:C:\Windows\Fonts\FZSTK.TTF  C:\Windows\Fonts\FZLTCXHJW.TTF  每个人的系统字符库里都有font="C:\Windows\Fonts\FZLTCXHJW.TTF"WordCloud =WordCloud(# 设置字体,不指定就会出现乱码font_path=font,  # 这个路径是pc中的字体路径# 设置背景色background_color='white',# 词云形状mask=mask,# 允许最大词汇max_words=100,# 最大号字体max_font_size=100,# 设置有多少种随机生成状态,即有多少种配色方案random_state=30,# 清晰度scale=3).generate(text)image_produce = WordCloud.to_image()image_produce.show()print('词云完成')

乱语

学习使用我只爬取了差评,数据量比较少,官网显示500+,最后爬下来350+,可能有些客服回复也算评论,那也算挺厚道的了,总评好像4w+,本来打算全弄下来,但发现没多大用处就不搞了。将商品id换一下不知道能不能获取到信息了,没试过,不过我觉得应该也是可以的。

几行代码爬取某东商品评论并写入数据库做成词云相关推荐

  1. python 爬取海量网易云评论并写入数据库

    本人是一个网易云音乐的重度患者,最近闲来无事,就想起来写一个爬虫爬一下网易云音乐上都有哪些有趣的评论,于此记录一下过程. 整体思路 可能是我的脑回路那啥,作为一个新手,咱一上来,是直接尝试爬取评论.随 ...

  2. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  3. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  4. python爬上市公司信息_实战项目 1:5 行代码爬取国内所有上市公司信息

    实战项目 1:5 行代码爬取国内所有上市公司信息 Python入门爬虫与数据分析 在正式开始这门专栏课的学习之前,我们先来看一个简单的爬虫案例.兴趣是最好的老师,当你对爬虫产生兴趣的时候,才会更有动力 ...

  5. 简单20行代码爬取王者荣耀官网1080p壁纸

    简单20行代码爬取王者荣耀官网1080p壁纸 # -*- coding: utf-8 -*- # @Time : 2020/12/13 18:08 # @Author : ningfangcong i ...

  6. Python25行代码爬取豆瓣排行榜数据

    Python25行代码爬取豆瓣排行榜数据 只需要用到requests, re ,csv 三个库即可. code import re import requests import csv url = ' ...

  7. python:利用20行代码爬取网络小说

    文章目录 前言 一.爬虫是什么? 二.实现过程 总结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 今天,来给大家一个分享一下如何使用20爬虫行代码爬取网络小说(这里我们以龙 ...

  8. python59行代码爬取免费ppt模板

    Python59行代码爬取某站中秋节ppt模板 网址:https://www.1ppt.com/moban/zhongqiujie/ 用到的库:requests.re.os.lxml 请求方式:GET ...

  9. 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!!

    教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: sel ...

最新文章

  1. 腾讯机器人实验室首曝光 攻坚“通用人工智能”
  2. 《HTML5高级程序设计》知识点概要(不涉及详细语法)
  3. Verilog功能模块——串行数据转并行数据
  4. 攻城狮危险:波士顿动力机器狗去福特当工程师了!
  5. 死磕java concurrent包系列(六)基于AQS解析信号量Semaphore
  6. db设计专用excel_独家|自卸车如何实现侧板结构快速设计,减少重复工作?
  7. HttpContext.Current.Cache在控制台下不工作
  8. Transaction marked as rollbackOnly异常处理 Duplicate entry 'xxx' for key
  9. devenv /ResetSkipPkgs
  10. 【Mac】Mac 键盘快捷键大全
  11. 笔记本风扇控制程序,支持蓝天模具笔记本
  12. 游戏IP手册:游戏IP的内涵元素
  13. kindle看pdf不清楚_Kindle 对 PDF 的支持真的很糟糕吗?
  14. 读取和修改JPEG图片文件的头信息EXIF和JFIF
  15. lintcode triangle 数字三角形
  16. vue 使用gsap(TweenMax)
  17. 从专家系统到知识图谱(好文)
  18. 【游戏逆向】CS1.6无后坐力基址寻找
  19. web前端 js实现频域水印制作
  20. Django教程:第一个Django应用程序(1部分)

热门文章

  1. Opencv sift词袋模型
  2. SSM水果蔬菜商城批发网站
  3. PostgreSQL 之 copy 命令基础
  4. 第五章;顺序结构程序设计
  5. python 3d绘图 拖动_在python中以交互方式旋转3D绘图 - matplotlib
  6. 读书笔记5.5——《让数字说话:审计,就这么简单》:孙含晖
  7. 均值归一化_数据归一化
  8. Mac电脑设置语音详细度的方法
  9. 浅谈2020web前端大趋势
  10. python随机森林 交叉验证_随机森林算法详解及Python实现