求大佬看看如何存储爬取到的json数组方便?
[{
"a" : "aa" ,
"b" : "bb" ,
},
{
"a" : "cc",
"b" : "dd",
}
]
[
{
"a" : "11" ,
"b" : "22" ,
},
{
"a" : "33",
"b" : "44",
},
{
"a" : "55",
"b" : "66"
}
]
爬取到的格式如上(a和b不变,只有后边跟的数据变),实际远远比上边的数组多。
如何在pycharm中改格式才能方便把json数组里的数据存入到mysql中?
求有经验的大佬们指点指点{:5_92:}
import requests
import pymysql
def main():
# 准备数据库连接,假如已有数据库test,其中已有stock这个表
db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='test')
cursor = db.cursor()
sql = 'INSERT INTO stock(id, name, symbol) values(%s, %s, %s)'
# 获取数据
url = 'http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData?page=1&num=5&sort=position&asc=0&node=dlm_qh&base=futures'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
j_data = r.json()
# 处理数据,拿name和symbol这2个值做例子
for n, i in enumerate(j_data):
nm = i['name']
sy = i['symbol']
print(nm)
print(sy)
# 写数据库
try:
cursor.execute(sql, (n, nm, sy))
db.commit()
except:
db.rollback()
db.close()
if __name__ == '__main__':
main() 数据格式不太对,你是如何获得这个数据的,我需要看下原始数据。 本帖最后由 头发 于 2021-1-18 17:18 编辑
suchocolate 发表于 2021-1-18 13:43
数据格式不太对,你是如何获得这个数据的,我需要看下原始数据。
http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData?page=1&num=5&sort=position&asc=0&node=dlm_qh&base=futures
原始的就是上边网址里的数据{:10_297:} 爬了很多个这种网址的,以json格式保存了 suchocolate 发表于 2021-1-18 13:37
多谢老哥!{:10_281:} suchocolate 发表于 2021-1-18 13:37
第一个数组正常,换下一个数组的时候,程序会报错:pymysql.err.InterfaceError: (0, '')
老哥你再爬一个url试下,就是把这俩的name和symbol写入
新url:
http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData?page=1&num=5&sort=position&asc=0&node=pta_qh&base=futures 头发 发表于 2021-1-18 19:57
第一个数组正常,换下一个数组的时候,程序会报错:
老哥你再爬一个url试下,就是把这俩的name和symbol ...
报错信息贴全 头发 发表于 2021-1-18 19:57
第一个数组正常,换下一个数组的时候,程序会报错:
老哥你再爬一个url试下,就是把这俩的name和symbol ...
我尝试了这个新连接,可以爬到并保存到数据库中。
我这个只是案例,你需要根据你自己的数据实际情况修改数据库的名称,表名。
另外还需要确认一下id,列名。
如果还是有问题,请把你的全部代码发出来。 suchocolate 发表于 2021-1-18 20:59
我尝试了这个新连接,可以爬到并保存到数据库中。
我这个只是案例,你需要根据你自己的数据实际情况修改 ...
老哥,我刚才没描述清楚。
爬完下边两个url的数据,然后再一起存到mysql,也就是有两个json数组数据了{:10_254:}
http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData?page=1&num=5&sort=position&asc=0&node=pta_qh&base=futures
http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData?page=1&num=5&sort=position&asc=0&node=dlm_qh&base=futures suchocolate 发表于 2021-1-18 20:59
我尝试了这个新连接,可以爬到并保存到数据库中。
我这个只是案例,你需要根据你自己的数据实际情况修改 ...
我想要把所有期货数据全爬下来,就会有好多个json数组。
老哥刚才给的程序存完第一个数组后就会报错:pymysql.err.InterfaceError: (0, '') 就不再继续存第二个json数组了
头发 发表于 2021-1-18 21:31
我想要把所有期货数据全爬下来,就会有好多个json数组。
老哥刚才给的程序存完第一个数组后就会报错:py ...
你设一个循环,遍历多个url,爬到的数据先放在一个临时的列表里,等爬完所有url之后,再把数据存到数据库中。 suchocolate 发表于 2021-1-19 08:34
你设一个循环,遍历多个url,爬到的数据先放在一个临时的列表里,等爬完所有url之后,再把数据存到数据库 ...
我就是用循环把所有url里的数据爬下来了,然后用老哥给的方法存储,只能把第一个数组存储下来。
爬下的咋改成列表类型的呀
头发 发表于 2021-1-19 11:37
我就是用循环把所有url里的数据爬下来了,然后用老哥给的方法存储,只能把第一个数组存储下来。
爬下的 ...
看不到你的代码,没法看哪里有错误,请把你的代码都发上来。
页:
[1]