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> ...
随机推荐
- ubuntu安装TexturePicker
TexturePacker网页:https://www.codeandweb.com/texturepackerTexturePacker下载页面:https://www.codeandweb.com ...
- Android 跨进程调用忽略权限
Framework层: @Override public StackInfo getStackInfo(int stackId) { final int callingUid = ...
- scss语法
SCSS其实就是SASS新语法, 增强了对CSS3语法的支持 1.变量(Variables) /*声明变明*/ $color: #333; $bgcolor:#f36; /*引用变量*/ body { ...
- c# WinForm 边框阴影窗体
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 批量远程执行linux服务器程序--基于pxpect(多进程、记日志版)
#!/usr/bin/python '''Created on 2015-06-09@author: Administrator''' import pexpect import os,sys fro ...
- 几何+线段交点+spfa(POJ1066)
Treasure Hunt Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total ...
- 在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)
1.首先上网搜索一下有什么解决方案 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现类似百度文库的效果,除支持office文档外还支持pdf (1) a. ...
- Maven搭建Nexus私有仓库
下载压缩包nexus-2.13.0-01-bundle.tar.gz 解压后有两个目录 进入程序目录启动 ./nexus start 启动告警(确认用root启动把以下加入到环境变量) export ...
- ubuntu16.04下安装opencv-nonfree
在写计算机视觉与导航技术的课程作业,是关于sift和surf特征的提取及匹配.因为opencv中都有直接的函数可以调用. 关于SIFT和SURF的特征在opencv的nonfree模块中,从字面意思就 ...
- Mysql的存储引擎和索引
可以说数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能忍受的.我们非常容易想象出一个只有单关键字组成的表如何使用B+树进行索引,只要将关键字存储到树的节点即可.当数据 ...