import pymysql

def insert_db(db_table, issue, time_str, num_code):
host = '127.0.0.1'
user = 'root'
password = 'root'
port = 3306
db = 'lottery'
data_base = pymysql.connect(host=host, user=user, password=password, port=port, db=db)
cursor = data_base.cursor()
try:
sql = "INSERT INTO %s VALUES ('%s','%s','%s')" % (db_table, issue, time_str, num_code)
cursor.execute(sql)
data_base.commit()
except ValueError as e:
print(e)
data_base.rollback()
finally:
cursor.close()
data_base.close()
def select_db(issue, db_table):
host = '127.0.0.1'
user = 'root'
password = 'root'
port = 3306
db = 'lottery'
data_base = pymysql.connect(host=host, user=user, password=password, port=port, db=db)
cursor = data_base.cursor()
try:
sql = "SELECT '%s' FROM %s " % (issue, db_table)
cursor.execute(sql)
data_base.commit()
except ValueError as e:
print(e)
data_base.rollback()
finally:
return issue
# 接下来是主要代码
# test.py:
# 使用bs4进行网页解析
# 实现了增量去重
# 实现了定时爬取
import datetime
import time
from bs4 import BeautifulSoup
import requests
from mysql_config import insert_db
from mysql_config import select_db
def my_test():
db_table = 'lottery_table'
url = 'http://kj.13322.com/kl10_dkl10_history_dtoday.html'
res = requests.get(url)
content = res.content
soup = BeautifulSoup(content, 'html.parser', from_encoding='utf8')
c_t = soup.select('#trend_table')[0]
trs = c_t.contents[4:]
for tr in trs:
if tr == '\n':
continue
tds = tr.select('td')
issue = tds[1].text
time_str = tds[0].text
num_code = tr.table.text.replace('\n0', ',').replace('\n', ',').strip(',')
print('期号:%s\t时间:%s\t号码:%s' % (str(issue), str(time_str), str(num_code)))
issue_db = select_db(issue, db_table)
try:
if issue_db == issue:
insert_db(db_table, issue_db, time_str, num_code)
print('添加%s到%s成功' % (issue_db, db_table))
except Exception as e:
print('%s 已经存在!' % issue_db)
print(e) if __name__ == '__main__':
flag = 0
now = datetime.datetime.now()
sched_time = datetime.datetime(now.year, now.month, now.day, now.hour, now.minute, now.second) + \
datetime.timedelta(seconds=3)
while True:
now = datetime.datetime.now()
if sched_time < now:
time.sleep(3)
print(now)
my_test()
flag = 1
else:
if flag == 1:
sched_time = sched_time + datetime.timedelta(minutes=2)
flag = 0

python增量爬虫的更多相关文章

  1. python增量爬虫pyspider

    1.为了能够将爬取到的数据存入本地数据库,现在本地创建一个MySQL数据库example,然后 在数据库中建立一张表格test,示例如下: DROP TABLE IF EXISTS `test`; C ...

  2. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...

  3. 四十一 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档.增.删.改.查.操作 注意:以下操作都是在kibana里操作的 elasticsearch(搜索引擎)都是基 ...

  4. 《实战Python网络爬虫》- 感想

    端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态. 端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的<实战Python网络爬虫>. 去 ...

  5. 零基础如何快速学习好Python网络爬虫?

    Python网络爬虫上手很快,能够尽早入门,可是想精通确实是需求些时间,需求达到爬虫工程师的级别更是需求煞费苦心了,接下来共享的学习道路是针对小白或许学习Python网络爬虫不久的同伴们. 学习网络爬 ...

  6. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  7. Ubuntu下配置python完成爬虫任务(笔记一)

    Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...

  8. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

  9. [Python] 网络爬虫和正则表达式学习总结

    以前在学校做科研都是直接利用网上共享的一些数据,就像我们经常说的dataset.beachmark等等.但是,对于实际的工业需求来说,爬取网络的数据是必须的并且是首要的.最近在国内一家互联网公司实习, ...

随机推荐

  1. 【Java】给整数加上千分位分隔符

    package com.testEmp; import java.text.DecimalFormat; public class NumberFormat { public static void ...

  2. 微信一键登录(微信OAuth2.0)

    1.注册微信开放平台https://open.weixin.qq.com,一定要清楚微信开放平台和微信公众平台是分别独立的,不能共用. 2.登录进入——管理中心,网站应用,创建网站应用.填写申请,企业 ...

  3. ossfs挂载oss到ECS本地并设置权限

    下载ossfs wget https://github.com/aliyun/ossfs/releases/download/v1.80.2/ossfs_1.80.2_ubuntu16.04_amd6 ...

  4. 把文档中的数据取出并插入到excel中

    from xlrd import open_workbookfrom xlutils.copy import copy jsonfile=r'C:\Users\Administrator\Deskto ...

  5. [CDH] New project for ML pipeline

    启动后台服务: [CDH] Cloudera's Distribution including Apache Hadoop 这里只介绍一些基本的流程,具体操作还是需要实践代码. 一.开发环境配置 JD ...

  6. 不知道AI这三点优势,你可能真的要被淘汰

    不知道 AI 这三点优势,你可能真的要被淘汰 我们正处于飞速发展的数字化转型时期,这是由巨大的市场转变驱动的--即人工智能和机器学习. 同时,随着AI 和机器学习技术的普及,从中获益的不仅仅是大型企业 ...

  7. SpringBoot: 9.整合thymeleaf(转)

    1.创建maven项目,添加项目所需依赖 <!--springboot项目依赖的父项目--> <parent> <groupId>org.springframewo ...

  8. springboot-helloworld-idea

    1.file-new-project-Spring Initializr-next:输入项目信息-next:web-next-finish 2.创建controller包 3.创建StudyContr ...

  9. 计蒜客习题:蒜头君的积木 (状压DP 枚举子集)

    问题描述 蒜头君酷爱搭积木,他用积木搭了 n 辆重量为 wi的小车和一艘最大载重量为 W 的小船,他想用这艘小船将 n 辆小车运输过河.每次小船运载的小车重量不能超过 W.另外,小船在运载小车时,每辆 ...

  10. mysql oracle postgresql 体系架构对比

    2个角度sqlservermysqloracle 12cpostgresql如果从create database角度来看 那么一个实例是可以对应多个数据库的~如果从实例和磁盘上的数据库文件(数据文件. ...