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

  

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

  

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

  

  

1。获取目标url

  

2。解析网页

  

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

  

4。异常处理

  

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

  

<强>下面为数据库的配置mysql_congif。py:
  

        进口pymysql         def insert_db (db_table,问题,time_str num_code):   主机=' 127.0.0.1 '   用户=案?   密码=案?   端口=3306   db=安势薄?   data_base=pymysql。连接(主机=主机、用户=用户、密码=密码,端口=端口,db=db)   光标=data_base.cursor ()   试一试:   sql="插入% s值(' % s ', ' % s ', ' % s ')”% (db_table问题,time_str num_code)   cursor.execute (sql)   data_base.commit ()   除了ValueError e:   打印(e)   data_base.rollback ()   最后:   cursor.close ()   data_base.close ()         db_table def select_db(问题):   主机=' 127.0.0.1 '   用户=案?   密码=案?   端口=3306   db=安势薄?   data_base=pymysql。连接(主机=主机、用户=用户、密码=密码,端口=端口,db=db)   光标=data_base.cursor ()   试一试:   sql="选择' % s ' % s“%(问题,db_table)   cursor.execute (sql)   data_base.commit ()   除了ValueError e:   打印(e)   data_base.rollback ()   最后:   返回的问题   之前      

<强>接下来是主要代码test.py:

        #使用bs4进行网页解析   #实现了增量去重   #实现了定时爬取   进口日期时间   导入的时间      从bs4进口BeautifulSoup   进口的要求         从mysql_config进口insert_db   从mysql_config进口select_db         def my_test ():   db_table=' lottery_table '   url=' http://kj.13322.com/kl10_dkl10_history_dtoday.html '   res=requests.get (url)   内容=res.content   汤=BeautifulSoup(内容的html。解析器”,from_encoding=' utf8”)   c_t=soup.select (# trend_table) [0]   trs=c_t.contents [4:]   在trs tr:   如果tr==' \ n ':   继续   tds=tr.select (td)   问题=tds [1]。text   time_str=tds [0]。text   num_code=tr.table.text。替换(' \ n ', ', ')。替换(' \ n ', ', ') .strip (" ")   打印(期号:% s \ t时间:% s \ t号码:% s的% (str(问题),str (time_str) str (num_code)))   db_table issue_db=select_db(问题)   试一试:   如果issue_db==问题:   insert_db (db_table issue_db、time_str num_code)   打印(“添加% s到% s成功的% (issue_db db_table))   除了例外e:   打印(' % s已经存在!”% issue_db)   打印(e)         if __name__==癬_main__”:   国旗=0   现在=datetime.datetime.now ()   sched_time=datetime.datetime(现在。年,现在。月,现在。天,现在。小时,现在。分钟,now.second) + \   datetime.timedelta(秒=3)   而真正的:   现在=datetime.datetime.now ()   如果sched_time & lt;现在:   time . sleep (3)   打印(现在)   my_test ()   标志=1   其他:   如果标志==1:   sched_time=sched_time + datetime.timedelta=2(分钟)   国旗=0   之前            

以上这篇python爬虫实现增量去重和定时爬取实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

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