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 = '
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2678784/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python scrapy增量爬取例項及實現過程解析Python
- python例項,python網路爬蟲爬取大學排名!Python爬蟲
- Python爬蟲例項:爬取貓眼電影——破解字型反爬Python爬蟲
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- 爬蟲去重策略爬蟲
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 一小時入門Python爬蟲,連我都會了!Python爬取租房資料例項Python爬蟲
- Python爬蟲專案100例,附原始碼!100個Python爬蟲練手例項Python爬蟲原始碼
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python爬蟲的兩套解析方法和四種爬蟲實現Python爬蟲
- python爬蟲例項專案大全-GitHub 上有哪些優秀的 Python 爬蟲專案?Python爬蟲Github
- 爬蟲的例項專案爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python爬蟲怎麼設定動態IP代理,Python爬蟲要注意哪些事項?Python爬蟲
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- Python爬蟲實踐--爬取網易雲音樂Python爬蟲
- Python爬蟲實戰一:爬取csdn學院所有課程名、價格和課時Python爬蟲
- python爬蟲獲取天氣網實時資料Python爬蟲
- python 爬蟲 爬取 learnku 精華文章Python爬蟲
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 19--Scarpy05:增量式爬蟲、分散式爬蟲爬蟲分散式
- 【爬蟲】Heritrix 3.2安裝和執行例項爬蟲
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- Python爬蟲教程-05-python爬蟲實現百度翻譯Python爬蟲
- python爬蟲之Beautiful Soup基礎知識+例項Python爬蟲
- 爬蟲例項-淘寶頁面商品資訊獲取爬蟲
- python爬蟲——爬取大學排名資訊Python爬蟲
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- python 爬蟲 1 爬取酷狗音樂Python爬蟲
- 【Python爬蟲】正則爬取趕集網Python爬蟲
- 如何保障爬蟲高效穩定爬取資料?爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- python的爬蟲功能如何實現Python爬蟲
- Python爬蟲是如何實現的?Python爬蟲
- python實現selenium網路爬蟲Python爬蟲
- python爬蟲實戰:爬取西刺代理的代理ip(二)Python爬蟲