无锡本地模板网站建设产品,lnmp wordpress 主题,上海企业名称开放查询,网站开发东莞。。。。。。。。。。。。。。。。。。。。。。 1.网页请求一下内容2.通过爬虫进行请求3.获取商品十五天详细数据并绘制折线图4.项目详细代码 1.网页请求一下内容 通过抓包我们发现一共七个参数
limit: 20 # 一页多少数据
current: … 。。。。。。。。。。。。。。。。。。。。。。 1.网页请求一下内容2.通过爬虫进行请求3.获取商品十五天详细数据并绘制折线图4.项目详细代码 1.网页请求一下内容 通过抓包我们发现一共七个参数
limit: 20 # 一页多少数据
current: 1 #第几页
pubDateStartTime: 2023/09/12 # 开始时间
pubDateEndTime: 2023/09/27 #结束时间
prodPcatid:
prodCatid:
prodName: 大白菜 #名称2.通过爬虫进行请求
首先我们获取十五天里这个货物一共有多少件
#name是由商品名-规格-产地组合而成
def xlx(name): #用来获取名字为name的商品十五天内该货物共有多少条数据#name白虾精品-21到24头并且活-data {limit: 1,current: 1,pubDateStartTime: f{s15},#自定义的时间pubDateEndTime: f{end},#自定义的时间prodPcatid: ,prodCatid: ,prodName: name.split(-)[0],}countrequests.post(url, datadata).json()[count]p(name,count)#将名称和数量传入p函数3.获取商品十五天详细数据并绘制折线图
def p(name,count):data {limit: f{count},current: 1,pubDateStartTime: f{s15},pubDateEndTime: f{end},prodPcatid: ,prodCatid: ,prodName: ,}data[prodName]name.split(-)[0]resrequests.post(urlhttp://www.xinfadi.com.cn/getPriceData.html,datadata).json()class_res[list][0][prodCat]resres[list]pricelow[]pricemax[]time_list[]for i in res:if i[prodName]name.split(-)[0]:#sgi[specInfo]s i[specInfo].replace(, 小于)#对字符串进行处理替换特殊字符s s.replace(, 大于)s s.replace(/, 并且)s s.replace(-, 到)s s.replace(\\, 或者)if sname.split(-)[1]:
#画图if i[place]name.split(-)[2]:pricemax.append(i[highPrice])pricelow.append(i[lowPrice])nstr(i[pubDate]).split( )[0].split(-)[1:]time_list.append(n[0].n[1])pricelow.reverse()pricemax.reverse()time_list.reverse()print(name)plt.figure(figsize(20, 10), dpi100)plt.plot(time_list, pricelow)plt.savefig(fr./类别/{class_}/价格趋势图/{name}.jpg)plt.close()with open(f./类别/{class_}/价格文档/{name}.txt, w) as fp:fp.write( .join(time_list)\n .join(pricemax)\n .join(pricelow))time.sleep(1)
4.项目详细代码
import matplotlib
import requests
import datetime
from multiprocessing.dummy import Pool
from matplotlib import pyplot as plt
import os
import shutil
import time
matplotlib.use(agg)def RemoveDir(filepath): #用来删除文件夹中的所有内容如果文件夹不存在就创建如果文件存在就清空if not os.path.exists(filepath):os.mkdir(filepath)else:shutil.rmtree(filepath)os.mkdir(filepath)def count(url,data):res requests.post(url, datadata)num res.json()[count]return numdef xlx(name): #用来获取名字为name的商品十五天内该货物共有多少条数据#name白虾精品-21到24头并且活-data {limit: 1,current: 1,pubDateStartTime: f{s15},pubDateEndTime: f{end},prodPcatid: ,prodCatid: ,prodName: name.split(-)[0],}countrequests.post(url, datadata).json()[count]p(name,count)#print(name)#print(count)#将名称和数据的数量传给p函数def p(name,count):data {limit: f{count},current: 1,pubDateStartTime: f{s15},pubDateEndTime: f{end},prodPcatid: ,prodCatid: ,prodName: ,}data[prodName]name.split(-)[0]resrequests.post(urlhttp://www.xinfadi.com.cn/getPriceData.html,datadata).json()class_res[list][0][prodCat]resres[list]pricelow[]pricemax[]time_list[]for i in res:if i[prodName]name.split(-)[0]:#sgi[specInfo]s i[specInfo].replace(, 小于)s s.replace(, 大于)s s.replace(/, 并且)s s.replace(-, 到)s s.replace(\\, 或者)if sname.split(-)[1]:if i[place]name.split(-)[2]:pricemax.append(i[highPrice])pricelow.append(i[lowPrice])nstr(i[pubDate]).split( )[0].split(-)[1:]time_list.append(n[0].n[1])pricelow.reverse()pricemax.reverse()time_list.reverse()print(name)plt.figure(figsize(20, 10), dpi100)plt.plot(time_list, pricelow)plt.savefig(fr./类别/{class_}/价格趋势图/{name}.jpg)plt.close()with open(f./类别/{class_}/价格文档/{name}.txt, w) as fp:fp.write( .join(time_list)\n .join(pricemax)\n .join(pricelow))time.sleep(1)def filetxt(filename):namelist[]file open(filename, r, encodingGBK)file file.readlines()for line in file:line line.strip(\n)namelist.append(line)return namelistclass_list[水产,水果,粮油,肉禽蛋,蔬菜,调料,豆制品] #所有的主类别
for i in class_list: #重置类别文件with open(f./类别/{i}/今日类别.txt, w) as fp:fp.write()RemoveDir(f./类别/{i}/价格文档)RemoveDir(f./类别/{i}/价格趋势图)urlhttp://www.xinfadi.com.cn/getPriceData.html #主页面urltoday datetime.date.today() #获取当前日期
yesterday str(today - datetime.timedelta(days1)) #获取今天往前十五天的日期 吧
s15str(today - datetime.timedelta(days15))
todaystr(today)
enddata_listtoday.split(-)
start_listyesterday.split(-) #去掉日期后面的时分秒
s15s15.split(-)
endenddata_list[0]/enddata_list[1]/enddata_list[2]#将日期格式转换为我们data需要的格式
startstart_list[0]/start_list[1]/start_list[2]
s15s15[0]/s15[1]/s15[2]
data{limit: 1,current: 1,pubDateStartTime: start,pubDateEndTime: end,prodPcatid: ,prodCatid: ,prodName: ,} #获取当天所有交易货物的data
res requests.post(url, datadata) #发送post请求#提取出共有多少种货物
data[limit]res.json()[count] #将data中的limit设置为货物总数就可以一次请求全部获取
resrequests.post(url,datadata).json() #获取到当天所有货物的产地型号等详细数据datares[list]for i in data: #循环便利每一种货物prodCati[prodCat]#提取出当前货物的类别si[specInfo].replace(,小于)ss.replace(,大于)ss.replace(/,并且)s s.replace(-, 到)s s.replace(\\, 或者)namei[prodName]-s-i[place] #将货物的名字定为 物品名-型号-产地with open(f./类别/{prodCat}/今日类别.txt, a) as fp: #按照类别将其保存到所属的主类文件夹中fp.write(name\n) #写入数据每个数据一行for i in class_list: #循环所有主类取出其中所有的货物名称filenamef./类别/{i}/今日类别.txtname_listfiletxt(filename)if name_list![]:#判断是否为空pool Pool(3) #开启线程池# 定义循环数origin_num [x for x in name_list] #每一个货物开启一个线程# 利用map让线程池中的所有线程‘同时’执行calc_power2函数pool.map(xlx, origin_num)