文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 爬取股市数据存入mysql

2023-01-31 00:59

关注

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

//获取新浪股票排行
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
#!/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()


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯