爬取东方财富的动态网页,这次真的可以了!

17 篇文章 1 订阅
1 篇文章 0 订阅

此文只是举一个例子,按说看过都能懂吧。主要是网上讲这种爬虫的挺少的,我是机械专业的,这都是自己摸索的,你们计算机的看懂应该轻轻松松。不过那个字符串处理,去掉jQuery那层括号有没有别的好方法,还请指教。

http://so.eastmoney.com/web/s?keyword=600010
在东方财富随便搜一个股票,就到了http://quote.eastmoney.com/sh600010.html。然后打开F12,点开调试器,然后ctrl+shift+F在文件中查找,搜索当前股票的价格1.47在这里插入图片描述就找了这个1.47,然后点开,右键,进入源网址。http://push2.eastmoney.com/api/qt/stock/get?ut=fa5fd1943c7b386f172d6893dbfba10b&invt=2&fltt=2&fields=f43,f57,f58,f169,f170,f46,f44,f51,f168,f47,f164,f163,f116,f60,f45,f52,f50,f48,f167,f117,f71,f161,f49,f530,f135,f136,f137,f138,f139,f141,f142,f144,f145,f147,f148,f140,f143,f146,f149,f55,f62,f162,f92,f173,f104,f105,f84,f85,f183,f184,f185,f186,f187,f188,f189,f190,f191,f192,f107,f111,f86,f177,f78,f110,f262,f263,f264,f267,f268,f250,f251,f252,f253,f254,f255,f256,f257,f258,f266,f269,f270,f271,f273,f274,f275,f127,f199,f128,f193,f196,f194,f195,f197,f80,f280,f281,f282,f284,f285,f286,f287,f292&secid=1.600010&cb=jQuery112405454041894453916_1620144511730&=1620144511731
我们要的只是f43,所以我们处理一下这个网址http://push2.eastmoney.com/api/qt/stock/get?ut=fa5fd1943c7b386f172d6893dbfba10b&invt=2&fltt=2&fields=f43&secid=1.600010&cb=jQuery112405454041894453916_1620144511730&
=1620144511731
打开网址就得到了jQuery112405454041894453916_1620144511730({“rc”:0,“rt”:4,“svr”:182993667,“lt”:1,“full”:1,“data”:{“f43”:1.47}});
注意到secid=1.600010,我一开始不知道前面这个1是什么意思,然后就去试了一个3开头的股票,发现是获取不到数据的,所以我改成了0去试,就ok了,实际上呢,很多股票软件都把深市和沪市分开的,基本上都是1是上海,0是深圳。
后面就是字符串处理了。

下面代码我本来都不想展示的,,,毕竟想申请专利。而且你们又不会点赞,哭哭。

def get_latest_price_of_stock(code):
    # 爬虫,直接在东方财富网获取数据
    is_in_shanghai = 0
    if code[0] == '6':
        is_in_shanghai = 1
    url = f'http://push2.eastmoney.com/api/qt/stock/get?ut=fa5fd1943c7b386f172d6893dbfba10b&invt=2&fltt=2&fields=f43&secid={is_in_shanghai}.{code}&cb=jQuery1124032163553318498406_1619439417617&_=1619439417618'
    headers = {
        'Accept': '*/*',
        'Accept-Encoding': 'gzip,deflate',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Connection': 'keep-alive',
        'Host': 'push2.eastmoney.com',
        'Referer': 'http: // quote.eastmoney.com /',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'
    }
    response = requests.get(url, headers=headers)
    while not response.ok:
        time.sleep(0.5)
        response = requests.get(url)

    a = response.content
    a = str(a.decode('utf-8'))
    a = a.split('1124032163553318498406_1619439417617(')[1]
    a = a[:-2]
    b = json.loads(a)
    price = b['data']['f43']
    if price == '-':
        df = pro.daily(ts_code=from_code_to_ts_code(code), start_date='19780101', end_date=end_date)
        price = df['close'][0]
    return price
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝不闻道,夕不可死

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值