python 爬虫 实现增量去重和定时爬取实例

 更新时间:2020年02月28日 07:41:49   作者:X_Special  
今天小编就为大家分享一篇python 爬虫 实现增量去重和定时爬取实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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

解决思路:

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之is与==的区别详解

    Python之is与==的区别详解

    这篇文章主要介绍了Python之is与==的区别详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Python自定义函数实现求两个数最大公约数、最小公倍数示例

    Python自定义函数实现求两个数最大公约数、最小公倍数示例

    这篇文章主要介绍了Python自定义函数实现求两个数最大公约数、最小公倍数,结合实例形式分析了Python求解两个数最大公约数与最小公倍数相关原理与算法实现技巧,需要的朋友可以参考下
    2018-05-05
  • Python OpenCV中常用图片处理函数小结

    Python OpenCV中常用图片处理函数小结

    在计算机视觉和图像处理领域,OpenCV(Open Source Computer Vision Library)是一个非常强大和流行的开源库,本文将介绍一些常用的OpenCV函数,希望对大家有所帮助
    2024-03-03
  • python图片处理库Pillow实现简单PS功能

    python图片处理库Pillow实现简单PS功能

    Python 届处理图片最强的库是 PIL(Python Image Library),但由于该库只支持 2.x 版本,在此基础上做了扩展,出了一个兼容 3.x 的版本也就是 Pillow,因此,我们今天要用的库就是Pillow
    2021-11-11
  • Python 和 JS 有哪些相同之处

    Python 和 JS 有哪些相同之处

    Python 是一门运用很广泛的语言,自动化脚本、爬虫,甚至在深度学习领域也都有 Python 的身影。下面通过本文给大家介绍Python 和 JS 有哪些相同之处,需要的朋友参考下吧
    2017-11-11
  • Django前端BootCSS实现分页的方法

    Django前端BootCSS实现分页的方法

    本文主要介绍了Django前端BootCSS实现分页的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • pytorch的backward()的底层实现逻辑详解

    pytorch的backward()的底层实现逻辑详解

    自动微分是一种计算张量(tensors)的梯度(gradients)的技术,它在深度学习中非常有用,这篇文章主要介绍了pytorch的backward()的底层实现逻辑,需要的朋友可以参考下
    2023-11-11
  • Python 功能和特点(新手必学)

    Python 功能和特点(新手必学)

    Python是一门简单而文字简约的语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大强项之一,它可让你专注于解决问题的办法而不是语言本身,通过本篇文章给大家介绍python功能和特点相关知识,感兴趣的朋友一起学习吧
    2015-12-12
  • 用python实现百度翻译的示例代码

    用python实现百度翻译的示例代码

    这篇文章主要介绍了用python实现百度翻译的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • python代码实现学生信息管理系统

    python代码实现学生信息管理系统

    这篇文章主要为大家详细介绍了python代码实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论