Python3.x:定时获取页面数据存入数据库

#间隔五分钟采集一次数据入库
import pymysql
import urllib.request
from bs4 import BeautifulSoup
import threading
import time # 数据入库处理
def doDataWlpc(jjdm, jjmc, dwjz, dwjzrq):
r_code = 0
print('基金信息:' + jjdm + ',' + jjmc + ',' + dwjz + ',' + dwjzrq)
try:
# 打开数据库连接
conn = pymysql.connect(host='localhost', user='root',
passwd='lizm', db='pythondb', port=3306, charset='utf8')
# 获取一个游标
cursor = conn.cursor()
# 查询数据是否已经存在
sql_check = """SELECT * FROM pythondb.t_x01_wlpc WHERE dwjz='""" + \
dwjz + """' and dwjzrq='""" + dwjzrq + """';"""
print('sql_check>>>:' + sql_check)
cursor.execute(sql_check)
results = cursor.fetchall()
# 判断是否有记录数
if len(results) == 0:
check_code = 0
else:
check_code = 1 if check_code == 0:
sql = """INSERT INTO pythondb.t_x01_wlpc (jjdm,jjmc,dwjz,dwjzrq,oprdate) VALUES('""" + \
jjdm + """','""" + jjmc + """','""" + dwjz + \
"""','""" + dwjzrq + """',sysdate());"""
try:
print('sql>>>:' + sql)
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
conn.commit()
r_code = 0
except:
# 如果发生错误则回滚
conn.rollback()
r_code = 1
else:
r_code = 0
print('基金' + jjmc + '数据已存在')
cursor.close() # 关闭游标
conn.close() # 释放数据库资源
except:
r_code = 1
print("失败,异常") return r_code # 获取基金的信息
def getJjInfor(header_, url_):
# 返回数组
r_info = [] req = urllib.request.Request(url=url_, headers=header_)
res = urllib.request.urlopen(req)
html = res.read().decode('utf-8')
soup = BeautifulSoup(html, 'html.parser') # css的class获取值
jjdm = soup.find(
'div', class_='fundDetail-tit').find('span', class_='ui-num')
r_info.append(jjdm.get_text())
#print('基金代码:' + jjdm.get_text()) title_name = soup.find('div', class_='fundDetail-tit')
r_info.append(title_name.text.split('(')[0])
#print('基金名称:' + title_name.text.split('(')[0]) # 获取估算净值、单位净值、累计净值
for dataNums in soup.find_all('dd', class_='dataNums'):
for jzs_ in dataNums.find_all('span', class_='ui-font-large ui-color-red ui-num'):
r_info.append(jzs_.text)
#print('' + jzs_.text) gz_gztime = soup.find(id='gz_gztime')
r_info.append(gz_gztime.text.replace('(', '').replace(')', ''))
#print('估算净值日期:' + gz_gztime.text.replace('(', '').replace(')', '')) # 输出class为'dataItem02'标签里面的第一个p元素
dwjzrq_s = soup.find('dl', class_='dataItem02').p
r_info.append(dwjzrq_s.text.split('(')[1].split(')')[0])
#print('单位净值日期:' + dwjzrq_s.text.split('(')[1].split(')')[0]) return r_info def main():
global timer
url = r'http://fund.eastmoney.com/340007.html?spm=search'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} jj_infor = []
jj_infor = getJjInfor(headers, url) print(jj_infor) return_code = doDataWlpc(jj_infor[0], jj_infor[1], jj_infor[3], jj_infor[5])
if return_code ==0:
print('执行成功')
else:
print('执行失败') #重复构造定时器
timer = threading.Timer(5*60,main)
timer.start() # 测试
if __name__ == '__main__':
#定时调度
timer = threading.Timer(1,main)
timer.start()

稍后再加上指定时间段内执行;

Python3.x:定时获取页面数据存入数据库的更多相关文章

  1. 爬虫小探-Python3 urllib.request获取页面数据

    使用Python3 urllib.request中的Requests()和urlopen()方法获取页面源码,并用re正则进行正则匹配查找需要的数据. #forex.py#coding:utf-8 ' ...

  2. 解决:HTML中多文本域(textarea)回车后数据存入数据库,EL表达式取出异常。

    问题描述: 当多文本域(textarea)回车后数据存入数据库. EL表达式取出异常,值换行倒置页面报错. 问题解决: 存值脚本代码,提交前转换\n为<br/>. <script t ...

  3. 运用.NIT将数据存入数据库、读取数据库(运用封装)陈老师作业

    我基础不好,根据所学的知识,书本的例题修改的,也不知道我理解的是否符合老师要求 运用C#将数据存入数据库.并且可以读取数据库里的数据,此项目我运用了封装.我运用了一个窗体将数据存读数据. 我首先创建了 ...

  4. 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据

    获取WebBrowser全cookie [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true) ...

  5. 解析Excel文件并把数据存入数据库

    前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...

  6. JS获取页面数据执行Ajax请求

    下面这个例子展示了如何使用js获取页面中元素的值,并且将这些值作为参数执行Ajax请求. $("#submit-task").bind("click", fun ...

  7. Scrapy爬虫入门系列3 将抓取到的数据存入数据库与验证数据有效性

    抓取到的item 会被发送到Item Pipeline进行处理 Item Pipeline常用于 cleansing HTML data validating scraped data (checki ...

  8. Django学习系列15:把POST请求中的数据存入数据库

    要修改针对首页中的POST请求的测试.希望视图把新添加的待办事项存入数据库,而不是直接传给响应. 为了测试这个操作,要在现有的测试方法test_can_save_a_post_request中添加3行 ...

  9. Springboot 上传CSV文件并将数据存入数据库

    .xml文件依赖配置 <!--csv依赖 --> <dependency> <groupId>org.apache.commons</groupId> ...

随机推荐

  1. Error setting expression 'XXX' with value 设置表达式“XXX”时出错 解决方法

    1.表达式“xxx”在所调用的action里没有与之对应的对象: 2.action里有该对象作为私有成员变量但是没有get&set方法.

  2. poj_2441 状态压缩dp

    题目大意 N头牛,M个谷仓,每个牛c都有它喜欢的若干个谷仓,现在要将这N头牛安排进谷仓,使得每个牛都位于它喜欢的谷仓,而每个谷仓只能有一头牛.求安排的方案总数.N, M <= 20 题目分析 将 ...

  3. 2.6 CMMI2级——供应商协议管理(Supplier Agreement Management)

    做软件开发的,不免要购买一些软硬件.软件可能是中间件.控件.插件.组件等,硬件可能是一些服务器.PDA.单片机等.只要稍微复杂的项目,都不可避免的会有采购的问题,就算目前没有采购,以后也会不可避免.另 ...

  4. 【BZOJ1500】[NOI2005]维修数列 Splay

    [BZOJ1500][NOI2005]维修数列 Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行 ...

  5. open live writer 安装 markdown 插件

    我自己用的是 OpenLiveWriter ,所以本篇只讲 OLW 的,WindowsLiveWriter 戳 MarkdownInWindowsLiveWriter,OpenLiveWriter 戳 ...

  6. 02Del.ashx(删除班级)

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using WebHelper ...

  7. Python+ Calibre 处理 中文报纸

    import re ##2 line='<a href=nw.D110000renmrb_20180401_1-01.htm><script>document.write(vi ...

  8. vs 开发常用快捷键

    alt+shift+enter    编辑区最大化ctrl+]        括号匹配 ctrl+j        强迫智能感知ctrl+shift+空格    强迫智能感知(参数) ctrl+k+d ...

  9. js 中 0 和 null 、"" Boolean 值关系

    在做字符串非空判断时,无意发现一个问题,记录下以便以后回顾. 问题描述:非空判断,只是校验传值的内容是否为"".null .undefined.当变量 赋值的字符串内容为 0,此时 ...

  10. 为什么 要弄清楚 mysql int(5) int(11) bigint 自建mysql主键id python random 科学计数法

    场景: 有1.2亿条问答数据,相同问题的不同答案为不同条的数据,且该表数据逐日递增: 第三方需求(不合理): 将问题.答案数据分别放入问题表.答案表: 问题表的主键为整数,在答案表中,每行数据有相应的 ...