所需要爬取的数据表
检查代码,选择该数据表的网络链接,如图所示为该数据表的数据
开始写代码!!
1、导包
import requests #获取网页 from bs4 import BeautifulSoup import pprint import json import pandas as pd from lxml import etree #解析文档 import re from selenium import webdriver
2、读取网页链接
url=f'http://push2his.eastmoney.com/api/qt/stock/fflow/daykline/get?cb=jQuery112309173939785847636_1634476786717&lmt=0&klt=101&fields1=f1%2Cf2%2Cf3%2Cf7&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf62%2Cf63%2Cf64%2Cf65&ut=b2884a393a59ad64002292a3e90d46a5&secid=0.000001&_=1634476786718' data=requests.get(url)#获取网页源代码 data.encoding='utf-8' str1=str(data.text) print(str1)
3、 数据提取
dict1=eval(str1[42:-2])#去掉“”,去掉首尾不用的字符串 dict2=dict1['data']['klines'] print(dict2[1]) split=re.split('[,]',dict2[1])#拆分 print(split)
4、数据处理
i=0 list1=[] for i in range(len(dict2)): i=1+i split=re.split('[,]',dict2[i]) list1.append(split) print(list1)
5、数据存储,生成数据框
df1=pd.Dataframe(list1) df1.columns=['日期','主力净流入-净额','小单净流入-净额','中单净流入-净额','大单净流入-净额','超大单净流入-净额','主力净流入-净占比', '小单净流入-净占比','中单净流入-净占比','大单净流入-净占比','超大单净流入-净占比','收盘价','涨跌幅','0','0'] del df1['0']#删除数据为0的列 print(df1)
6、写入数据库
知识点:
create_engine参数说明:
(mysql+mysqldb://用户名:密码@localhost:端口/数据库名?编码)设置数据库的编码方式,可以防止latin字符不识别而报错
to_sql参数说明:
(数据, '表名', con=连接键, schema='数据库名', if_exists=' *** 作方式')
其中 *** 作方式有append、fail、replace
#写入数据库 import pymysql import pandas as pd from sqlalchemy import create_engine ##将数据写入mysql的数据库,但需要先通过sqlalchemy.create_engine建立连接,且字符编码设置为utf8,否则有些latin字符不能处理 conn = create_engine('mysql+pymysql://root:123456@localhost:3306/stock?charset=utf8') pd.io.sql.to_sql(df1,'000001_data',conn,schema='stock',if_exists='append')
7、最终数据表
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)