美文网首页Python web开发v渗透测试
Python秒杀脚本,再也不怕抢不到货了!

Python秒杀脚本,再也不怕抢不到货了!

作者: Python程序猿 | 来源:发表于2018-03-29 22:22 被阅读22次

    前段时间看有人发一个京东秒杀的小程序,正好自己也在学python 所以自己写试着写了一个看看 顺便分析一下过程

    最开是直接爬去京东秒杀发现得不到想要的内容 猜测应该是js代码生成的数据 好不容易找到了jons数据接口 结果解析的时候一直报错,又回去吧json解析教程看了一遍 发现获取到的页面不是纯json数据格式 于是用re匹配

    终于出现了中文

    然后去提取数据 运行又报错 我也很绝望啊

    回去看json数据发现开售商品和没开售的商品结构是不一样的 还有的商品居然没有销售状态(因为代码写的差不多了 也没有据深究)

    有兴趣的朋友可以看看这个是什么状态下的商品

    在这里还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

    因为一开始只是想爬取电脑办公类目下的商品 所以没有定义函数(好吧 我承认自己没有一个好的python编写习惯

    ) 最后才写的for 看起来怪怪的。

    一次差不多2900个商品链接

    Python代码:

    import requests

    import json

    import re

    import csv

    dnbg = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=29&_=1495211171059' #电脑办公

    shdq= 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=19&_=1495250002658' #生活电器

    sjtx = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=30&_=1495251020781' #手机通讯

    djd = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=25&_=1495251044176' #大家电

    znsm = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=31&_=1495251057993' #智能数码

    yljs = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=45&_=1495251084828' # 饮料酒水

    jjjz = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=37&_=1495251148047' #家具家装

    mytz = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=43&_=1495251122767' #母婴童装

    spsx = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=44&_=1495250603966' #食品生鲜

    ghjq = 'https://ai.jd.com/index_new?app=Seckill&action=pcSeckillCategoryGoods&callback=pcSeckillCategoryGoods&id=32&_=1495251170952' #个护家清

    def jdmiaosha(url): #开始只是想爬去电脑办公的 函数是后来加上去的

    resp= requests.get(url).text

    #print(resp)

    resp = re.findall(r'((.+))',resp)[0] #提取纯json代码 不然解析会出错

    #print(resp)

    s = json.loads(resp)

    with open("jd.csv","a",newline="") as datacsv:

    csvwriter = csv.writer(datacsv,dialect = ("excel"))

    csvwriter.writerow(["商品","价格","销售状态","链接"])

    datacsv.close

    for i in s['goodsList']:

    sales_url = "https://item.jd.com/"+str(i['wareId'])+".html"

    if 'soldRate' in i.keys():

    sales_status = str(i['soldRate'])+"%" # 区别是否开抢 确定销售状态

    else:

    if not i['startTimeContent']:

    sales_status = "---"

    else:

    sales_status = i['startTimeContent']

    print('商品:{0} 价格:{1} 销售状态:{2} 链接:{3}.'.format(i['wname'],i['miaoShaPrice'],sales_status,sales_url)) #格式化输出

    with open("jd.csv","a",newline="") as datacsv: #写入到csv文件

    csvwriter = csv.writer(datacsv,dialect = ("excel"))

    csvwriter.writerow([i['wname'],i['miaoShaPrice'],sales_status,sales_url])

    for url in [dnbg,shdq,sjtx,djd,znsm,yljs,jjjz,mytz,spsx,ghjq]:

    jdmiaosha(url)

    相关文章

      网友评论

      • IT人故事会:老铁下次注意格式啊,不太清晰,给点建议对于新手需要的是注释啊

      本文标题:Python秒杀脚本,再也不怕抢不到货了!

      本文链接:https://www.haomeiwen.com/subject/fwgvcftx.html