前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 爬取股市数据存入mysql

python 爬取股市数据存入mysql

作者头像
py3study
发布2020-01-14 21:05:52
3.1K0
发布2020-01-14 21:05:52
举报
文章被收录于专栏:python3python3

1.利用casperjs 爬取新浪股市排行数据,生成数据文件

代码语言:javascript
复制
//获取新浪股票排行
var?casper?=?require('casper').create({
????waitTimeout:?10000,
????verbose:true,
????logLevel:?"debug",
????clientScripts:?["../jquery-3.1.1.min.js"],?#Casperjs的运行需要jquery
????pageSettings:?{
????????loadImages:??false,?
????????loadPlugins:?false,????
????userAgent:?'Mozilla/5.0?(Windows?NT?6.1;?rv:17.0)?Gecko/20100101?Firefox/17.0',
???},
});????
casper.start();??
//?2.?打开新浪股票热度排行页面??
casper.thenOpen('http://touzi.sina.com.cn/public/bhot');??
??
//?3.输出全市场用户关注1日变化幅度排行?
casper.then(function?getrank()?{??
??rank?=?casper.evaluate(function?()?{
????var?trlist?=?[];??
??????$("#allday1").find('tr:gt(0)').each(function(){
????????var?tdlist?=?[];
??????????$(this).find("td").each(function()?{
?????????????tdlist.push($(this).text().trim());
??????????});
??????????tdlist.push('\n');
??????????trlist.push(tdlist);
??????});?????????????????
??????return?trlist;
??});?
????var?filename?=?'data/allday1_sina.txt';
????var?fs?=?require('fs');
????fs.write(filename,rank);
});?
//?4.输出全市场用户关注5日变化幅度排行?
casper.then(function?getrank()?{??
??rank?=?casper.evaluate(function?()?{
????var?trlist?=?[];??
??????$("#allday5").find('tr:gt(0)').each(function(){
????????var?tdlist?=?[];
??????????$(this).find("td").each(function()?{
?????????????tdlist.push($(this).text().trim());
??????????});
??????????tdlist.push('\n');
??????????trlist.push(tdlist);
??????});?????????????????
??????return?trlist;
??});?
????var?filename?=?'data/allday5_sina.txt';
????var?fs?=?require('fs');
????fs.write(filename,rank);
});?
?
casper.run();

2.使用 python入库 读取Casperjs生成的数据文件,写入mysql

代码语言:javascript
复制
#!/usr/bin/evn?python
#?-*-?coding:utf-8?-*-
import?MySQLdb
import?os,sys,subprocess

class?Spider():
???def?__init__(self,?filename,?js_filename,?table):
?????self.url?=?url
?????self.filename?=?filename?
?????self.table?=?table
???
???def?read_file_data(self):?????????
?????value_sets?=?[]?????????
?????try:?????????????
???????with?open(self.filename,?'rb')?as?data:
?????????count?=?0
?????????for?line?in?data:
???????????value?=?line.decode("gb2312").encode("utf-8").split()
???????????value_sets.append(value)?????????????????????
???????????count?+=?1?????????????
?????????return?value_sets,?count?????????
?????except?Exception,e:?????????????
????????print?Exception,":",e
????
???def?get_insert_sql(self):
??????"""
??????获取table字段list,返回插入数据sql语句
??????"""
?????try:
???????cursor?=?db.cursor()
???????cursor.execute("select?*?from?%s?limit?1"?%?self.table)
???????field_name_list?=?[each[0]?for?each?in?cursor.description]
???????del?field_name_list[0]??#去除自增id字段名
???????column_list?=?"("?+?",".join([field?for?field?in?field_name_list])?+?")"
???????values_format?=?"values("?+?("%s,"*len(field_name_list)).rstrip(',')?+?")"
???????insert_sql?=?"INSERT?INTO?%s"?%?self.table+column_list?+?values_format
???????return?insert_sql
?????except?Exception,?e:
???????print("Error:?%s"?%?e)
?????cursor.close()
?????db.close()
???????
???def?save(self):
?????value_sets,?count?=?self.get_file_data()
?????insert_sql?=?self.get_insert_sql()
?????if?not?(value_set?and?count):
???????print?"get?data?fom?file?failed"
?????if?not?insert_sql:
???????print?"get?insert_sql?failed"
?????try:
???????cursor?=?db.cursor()?
???????cursor.executemany(insert_sql,?value_sets)
???????db.commit()
???????print?(u"成功插入数据%d条"?%?count)
?????except?Exception,?e:
???????db.rollback()
???????print?Exception,?":",?e
???????print?(u"插入数据失败,数据回滚")
?????cursor.close()
?????db.close()
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com