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. 好用的在线Markdown编辑器

    dillinger.io 支持在线编辑,导出为html格式等.

  2. VS2013快捷键

    这个好用,先放这两个 组合键“Ctrl+Enter”:在当前行的上面插入一个空行:  组合键“Ctrl+Shift+Enter”:在当前行的下面插入一个空行.

  3. Objective-c官方文档翻译 类的定义

     类是对象的蓝图. 一个类是描述了对象的行为和属性.例如NSString的一个实例.他的类提供了各种的方法来转化和表示他的内部字符的表示.   每个类的实例都包含了这个类的属性和行为.例如每个NSSt ...

  4. Docker源码分析(三):Docker Daemon启动

    1 前言 Docker诞生以来,便引领了轻量级虚拟化容器领域的技术热潮.在这一潮流下,Google.IBM.Redhat等业界翘楚纷纷加入Docker阵营.虽然目前Docker仍然主要基于Linux平 ...

  5. 【BZOJ3434】[Wc2014]时空穿梭 莫比乌斯反演

    [BZOJ3434][Wc2014]时空穿梭 Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间 ...

  6. Service简介 demos

    extends:http://blog.csdn.net/ithomer/article/details/7364024 一. Service简介 Service是android 系统中的四大组件之一 ...

  7. 几何+点与线段的位置关系+二分(POJ2318)

    TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10666   Accepted: 5128 Description ...

  8. 阿里云ecs禁止ping,禁止telnet

    现在的中小型企业服务器大多是云比较多,因此,可能会面临着服务器ping不通,或者是端口telnet不通的情况,但是服务器上的服务仍然是正常的情况,这个时候我们就要考虑是不是云上配置了访问规则了.废话不 ...

  9. 玩转JavaScript Callback函数

    如果你对Jquery没有足够的经验,但是你又用过JQuery,这么来说没你已经用过了回调函数了.但是你可能不知道它是如何工作和实现的. 这篇文章主要基于我所了解的回调函数,我试图启发大家基于最常规的J ...

  10. poj3171 Cleaning Shifts【线段树(单点修改区间查询)】【DP】

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4422   Accepted: 1482 D ...