Python3.x:定时获取页面数据存入数据库
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:定时获取页面数据存入数据库的更多相关文章
- 爬虫小探-Python3 urllib.request获取页面数据
使用Python3 urllib.request中的Requests()和urlopen()方法获取页面源码,并用re正则进行正则匹配查找需要的数据. #forex.py#coding:utf-8 ' ...
- 解决:HTML中多文本域(textarea)回车后数据存入数据库,EL表达式取出异常。
问题描述: 当多文本域(textarea)回车后数据存入数据库. EL表达式取出异常,值换行倒置页面报错. 问题解决: 存值脚本代码,提交前转换\n为<br/>. <script t ...
- 运用.NIT将数据存入数据库、读取数据库(运用封装)陈老师作业
我基础不好,根据所学的知识,书本的例题修改的,也不知道我理解的是否符合老师要求 运用C#将数据存入数据库.并且可以读取数据库里的数据,此项目我运用了封装.我运用了一个窗体将数据存读数据. 我首先创建了 ...
- 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据
获取WebBrowser全cookie [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true) ...
- 解析Excel文件并把数据存入数据库
前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...
- JS获取页面数据执行Ajax请求
下面这个例子展示了如何使用js获取页面中元素的值,并且将这些值作为参数执行Ajax请求. $("#submit-task").bind("click", fun ...
- Scrapy爬虫入门系列3 将抓取到的数据存入数据库与验证数据有效性
抓取到的item 会被发送到Item Pipeline进行处理 Item Pipeline常用于 cleansing HTML data validating scraped data (checki ...
- Django学习系列15:把POST请求中的数据存入数据库
要修改针对首页中的POST请求的测试.希望视图把新添加的待办事项存入数据库,而不是直接传给响应. 为了测试这个操作,要在现有的测试方法test_can_save_a_post_request中添加3行 ...
- Springboot 上传CSV文件并将数据存入数据库
.xml文件依赖配置 <!--csv依赖 --> <dependency> <groupId>org.apache.commons</groupId> ...
随机推荐
- iOS文件处理介绍(一)
一.在Documents.tmp和Library中存储文件 Documents:用于存储应用程序中经常需要读取或写入的常规文件. tmp:用于存储应用程序运行时生成的文件.(随着应用程序的关闭失去了利 ...
- MyEclipse 2016 CI修改web项目context-root
右击项目properties——>搜索Deployment Assembly,修改如红框所示的Web Context Root
- jdbc链接数据库,获取表名,字段名和数据
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import ...
- Django restframwork
REST介绍 全称Representational State Transfer,即表现层状态转换,如果一个架构符合REST原则,我们就称他为Restfull架构,其主要包括如下方面: 资源Resou ...
- poj_2553 强连通分支&出度为0的点
题目大意 N个点的有向图中,定义“好点”为: 从该点v出发可以到达的所有点u,均有一条路径使得u可达v. 求出图中所有的“好点”,并按照顺序从小到大输出出来. 题目分析 图存在多个强连通分支,强连通分 ...
- c++ 引用底层实现
红色是我添加的,其他地方是原作者的. 主要是看了上面的这篇“从底层汇编理解 c++ 引用实现机制“的文章之后,觉得不错.就转了过来,同时,对文中的程序都在自己的机器上验证了一下. 使用的G++版本:g ...
- 使用Java对文件进行解压缩
最近在一个项目中需要对文件进行自动的解压缩,Java提供了这种支持,还是挺好用的. 工具包封装在java.util.zip中. 1.首先是多个文件压缩成一个ZIP文件 思路:用一个ZipOutputS ...
- HFS的远程命令执行漏洞(RCE)
一.HFS漏洞 1.影响版本 : 2.3c以前的2.3x版本 2.HFS: HFS是HTTP File Server,国外的一款HTTP 文件服务器软件,简单易上手. 3.漏洞描述: HTTP Fil ...
- 移动端touch事件滚动
本来想用在北京欢乐谷手机上用touch事件来模拟局部左右内容滚动里,但在touchmove上下滚动时由于禁止了默认事件而body滚动条不能滚动,虽然可以根据touchmove的坐标来判断方向,但体验效 ...
- 【BZOJ3434】[Wc2014]时空穿梭 莫比乌斯反演
[BZOJ3434][Wc2014]时空穿梭 Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间 ...