2021-06-08

东方财富网爬虫小记

1.网页是如何存储数据

以创业板为例
在这里插入图片描述
打开开发人员工具,选定到当前页面网址
在这里插入图片描述
点击preview与response栏,发现页面中所显示的数据并不在网页源码中

ok!我们可以直接在抓包工具中进行搜索

在这里插入图片描述
点击该结果并查看preview和response,发现显示的数据和页面显示的结果一致
再确认
在这里插入图片描述
数据条目一致,恭喜你,找到了需要的数据了,进行下一步。

2.对数据进行分析

将获取的链接打开
在这里插入图片描述
以上数据和页面显示数据一模一样好吗!在上述地址进行一定的改变甚至可以进行翻页等操作(pn表示页码,pz表示一页含有多少数据)。
但是显示的这些数据中含有很多标识信息,而我们不需要这些信息,所以将需要的数据取出就可以了
ok.那么到了我们最后的环节,将这些数据获取下来保存至数据库中。

3.获取需要的数据

直接上代码

import requests
import json
import pymysql

# 链接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='test123', database='world', charset='utf8')
cu = conn.cursor()
# 建表
sql = "create table if not exists DongFangCaiFu(" \
      "`代码` int(6) not null primary key," \
      "`名称` varchar(255) not null," \
      "`最新价` decimal(10,2)," \
      "`涨跌幅` decimal(10,2)," \
      "`涨跌额` decimal(5,2)," \
      "`成交量` int(10)," \
      "`成交额` decimal(65,2)," \
      "`振幅` decimal(10,2)," \
      "`最高` decimal(10,2)," \
      "`最低` decimal(10,2)," \
      "`今开` decimal(10,2)," \
      "`昨收` decimal(10,2)," \
      "`量比` decimal(10,2)," \
      "`换手率` decimal(10,2)," \
      "`市盈率` decimal(10,2)," \
      "`市净率` decimal(10,2)" \
      ");"
# 插入语句
insert_sql = "insert into DongFangCaiFu values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
cu.execute(sql)
# 访问url获取数据
url = 'http://45.push2.eastmoney.com/api/qt/clist/get?'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/91.0.4472.77 Safari/537.36',
}

parma = {
    # 'pn':  '3',     # 页码
    # 'pz':  '20'   # 一页数据条数
    'cb': 'jQuery11240025479411443658728_1623143222865',
    'pn': '1',
    'pz': '20',
    'po': '1',
    'np': '1',
    'ut': 'bd1d9ddb04089700cf9c27f6f7426281',
    'fltt': '2',
    'invt': '2',
    'fid': 'f3',
    'fs': 'm:0 t:80',
    'fields': 'f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,'
              'f115,f152',
    '_': '1623143222866'}
res = requests.get(url, headers=headers, params=parma)
res = res.text[118:-4]
json_data = json.loads(res)
for item in json_data:
    cu.execute(insert_sql, (item['f12'], item['f14'], item['f2'], item['f3'], item['f4'], item['f5'], item['f6'],
                            item['f7'], item['f15'], item['f16'], item['f17'], item['f18'], item['f10'], item['f8'],
                            item['f9'], item['f23']))
    conn.commit()
cu.close()
conn.close()

结果

在获取时选择获取第一页20个结果,如有需要可自行更改代码
在这里插入图片描述
再来看一下网页上的数据
在这里插入图片描述
简直一模一样!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值