前言: 在爬虫过程中,我们可能需要重复的爬取同一个网站,为了避免重复的数据存入我们的数据库中 通过实现增量去重 去解决这一问题 本文还针对了那些需要实时更新的网站 增加了一个定时爬取的功能;

本文作者同开源中国(殊途同归_);

解决思路:

1.获取目标url

2.解析网页

3.存入数据库(增量去重)

4.异常处理

5.实时更新(定时爬取)

下面为数据库的配置 mysql_congif.py:

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 爬虫 实现增量去重和定时爬取实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。

mysql 去重con_python 爬虫 实现增量去重和定时爬取实例相关推荐

  1. php定时爬虫,thinkphp5使用workerman定时器定时爬取站点内容的代码

    本篇文章给大家分享的内容是关于thinkphp5使用workerman定时器定时爬取某站点新闻资讯等的内容,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. 1.首先通过 composer ...

  2. Scrapy-redis 分布式爬虫-成都安居客二手房数据爬取

    Joint-spider 项目地址:GitHub Scrapy-Redis 架构: 成都贝壳,安居客房源信息爬虫 基于 python 分布式房源数据爬取系统,为房价数据挖掘及可视化提供数据支持.采用 ...

  3. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  4. python 扒数据_不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据

    Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得 ...

  5. php爬虫:知乎用户数据爬取和分析

    php爬虫:知乎用户数据爬取和分析 2016-04-10    PHP开发者     (点击上方公众号,可快速关注) 作者:崔小拽        原文链接:http://cuihuan.net/art ...

  6. 【2020-10-27】 scrapy爬虫之猎聘招聘信息爬取

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! scrapy爬虫之猎聘招聘信息爬取 1.项目场景 目标网址:https://www.liepin.com/zhao ...

  7. 记录使用scrapy爬取新闻网站最新新闻存入MySQL数据库,每天定时爬取自动更新

    爬取每天更新的新闻,使用scrapy框架,Python2.7,存入MySQL数据库,将每次的爬虫日志和爬取过程中的bug信息存为log文件下.定义bat批处理文件,添加到计划任务程序中,自动爬取. 额 ...

  8. python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  9. 知乎python练手的_Python—爬虫之初级实战项目:爬取知乎任一作者的文章练手

    爬虫之初级实战项目:爬取知乎任一作者的文章练手 在正式上代码之前,先过一遍之前所学知识的框架内容,温故而知新!!! 接下来我们直接上代码,一定要手敲代码.手敲代码.手敲代码!!! import req ...

最新文章

  1. 美团五大最受欢迎的开源项目!
  2. wps 模拟分析 规划求解_入行十年,我是如何解决模流分析准确性问题的
  3. es修改排序_java 如何实现ElasticSearch自定义排序
  4. 今天发现了VISTA系统的一个BUG
  5. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数
  6. c语言编程怎么实现替换,使用C语言实现字符串中子字符串的替换
  7. 完成简单的四则运算(包含小括号)(栈)
  8. jQ判断一个元素是否为空
  9. 做 Python 代码重构,竟发现这些“潜规则”!
  10. OC---Math公式
  11. 适配器模式之组合模式
  12. Xceed WPF 3D显示控件Xceed 3D Views for WPF控件详细介绍使用及下载
  13. Nginx反向代理处理跨域问题
  14. requests的Proxy-SSL错误
  15. airpods pro是按压还是触摸_泼冷水:AirPods Pro至今为止媒体们还没提到但影响使用体验的TIPS...
  16. 骨传导也有动铁单元般的音质,绝对品质,真的是诚意满满
  17. 《Java零基础入门到精通(集合,泛型,IO,反射,JVM, 源码)【渡一教育】》思维导图版笔记(完结)
  18. API网关-Gateway
  19. 案例分析第一课预习笔记
  20. Dynamo衍生式设计(四)——基坑降水井布置实例

热门文章

  1. python 位运算与等号_Python 运算符
  2. 吸水间最低动水位标高_水库水位库容监测系统方案
  3. 2022-2028年中国聚硫橡胶行业市场研究及前瞻分析报告
  4. WSL 或者ubantu安装 apt-get install npm 失败解决方法
  5. 对列表去重并保持原来的顺序
  6. python 替换字符串的方法replace()、正则re.sub()
  7. plt.figure()的使用
  8. LeetCode简单题之拥有最多糖果的孩‭子
  9. NCHW与NHWC格式
  10. H.265视频编码与技术全析(上)