练习将网页抓取的内容通过正则筛选传进数据库

本文介绍了一个Python类,用于从网页中抓取股市指数数据,如上证50、沪深300等,并使用正则表达式解析数据,最后将数据插入到本地MySQL数据库中。
import pymysql
import re
import time

class CatchStockIndexData(object):

    def __init__(self,fund_data,index_name,index_code):
        self.id=0
        self.index_name=index_name
        self.index_code=index_code
        self.fund_data=fund_data    
    
    def re_handle_funddata(self):
        re_template=r">([^\:\s""]+)<"
        ret=re.findall(re_template,self.fund_data)
        return ret
        
    def combine_fund_datalist(self,catched_data):
        name_code_list=[self.id,self.index_code,self.index_name]
        catch_time=[str(time.ctime())]
        fund_data_list=name_code_list+catched_data+catch_time
        return fund_data_list
        
    def thread_data_to_mysql(self,combined_data_list):
        conn=pymysql.connect(host='localhost',port=3306,user='root',password='mysql',database='stock_info',charset='utf8')
        cc=conn.cursor()    
        sql="""insert into stock_information value(%s,%s,%s,%s,%s,%s,%s,%s,%s)"""
        cc.execute(sql,combined_data_list)
        conn.commit()
        print("数据插入成功")
        cc.close()
        conn.close()
        
    def run(self):
        # 1. 处理网页动态数据
        catched_data=self.re_handle_funddata()
        # 2. 整合指数数据列表
        combined_data_list=self.combine_fund_datalist(catched_data)
        # 3. 将整合后列表中的数据传给数据库
        self.thread_data_to_mysql(combined_data_list)
 
if __name__=="__main__":
   
    fund_data="""<tr>
                <td>今开:</td><td id="gt1" class="txtl red">3134.75</td>
                <td>最高:</td><td id="gt2" class="txtl red">3138.46</td>
                <td>涨跌幅:</td><td id="gt3" class="txtl green">-0.43%</td>
                <td>换手:</td><td id="gt4" class="txtl">0.47%</td>
                <td>成交量:</td><td id="gt5" class="txtl">1.65亿手</td>
            </tr>"""
    eastmoney_shangzhen50=CatchStockIndexData(fund_data,index_name="上证50",index_code="000016")
    eastmoney_shangzhency=CatchStockIndexData(fund_data,index_name="创业板指数",index_code="399006")
    eastmoney_shangzhen300=CatchStockIndexData(fund_data,index_name="沪深300",index_code="000300")
    eastmoney_shangzhenA=CatchStockIndexData(fund_data,index_name="A股指数",index_code="000002")
    
    eastmoney_shangzhenA.run()
    
    


备注:网页内容是手动复制的,好low(≧▽≦)/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值