用mysql数据库整理、清洗9000条京东内衣销售数据
上一篇详细介绍了爬取过程,这篇主要介绍用mysql数据库整理数据,爬取详情可参考:
上一篇爬取详情点这里
爬取目的是为了得到数据进行关联度分析(罩杯大小和消费价格的倾向有无关系),这是中间的一篇
1.for循环更改产品id和评论页数,获取大量数据
(这里解释一下为什么页数用0-99页,虽然商品上显示有几万评论,每页10个评论应该有几千页才对,但是京东很多评论100页后是空的;我选了九个商品,价格分别在60 110 160 三个档次 各三个。另外,由于基本上店铺里面都是ABC 小罩杯和 DEF以上的罩杯分开卖,所以为了统一,我只选了只卖ABC三个罩杯的店进行爬取)
下面展示一些 内联代码片
。
from urllib import request
import json
import numpy
import time #用于计算程序运行时间
import csv #用于将得出数据导入csv文件中(csv逗号分隔符,你可以想象是没有格子的excel,用逗号分隔)
starttime=time.time() #启动计时
fileopen=open('bra.csv','w',newline='')
# 打开一个文件,并写入文件。参数1是文件名,参数2是write缩写写入意思,参数3emmm 不好解释,如果没有会写一行空一行
writer=csv.writer(fileopen)
#生成写入对象,想象成一支笔就行
ROW=[] #全局变量用来搜集爬取的特征数据
pagenum=numpy.arange(0,100) #生成0、1、2、3 到99的List,即页数List
productid={
11276508271:'low',20356806191:'low',10372893109:'low',100000198518:'mid',32207941921:'mid',
25695145322:'mid',32227619225:'hight',52553994236:'hight',41232098143:'hight'}
# id,还有对应的价格,low是60左右,mid 是110左右,hihgt 是160左右 (Hight单词打错了、。。。,不改了)
wrongpage=0 #会有极少页的格式是错的,爬取不出来,这个记录错误的页码数
接下来是爬取内容的循环以及数据搜集:
##### 以下呢就是爬取过程,只是变动了产品id和页数,可以看之前那篇博客,有非常详细的解释
#我这里稍微增加一些其他的解释就行
# 这里提前解释fomat()这个格式化函数,更改id和页数用 举个例子你就懂,稍后不再解释
# A='aaa{}aaa' A.format(a) , 格式化后B就代替了A中的{},A变成'aaaaaaa'
url0='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId={}&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1'
for id in productid.keys():
for ii in pagenum:
url=url0.format(id,ii)
req=request.Request(url)
response=request.urlopen(req)
#不用try的话,有一些格式错误的页码就会停止程序运行,但是这些页码非常少,可以忽略不计
# 出错的时候try可以直接跳过本次操作继续往下操作
try:
page=response.read().decode('gbk')
page