日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫...

發布時間:2024/9/27 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RT,最近在學scrapy,寫了一個簡單的爬取網頁數據的爬蟲,利用CrawlProcess單次調用執行的時候沒有問題,腳本如下,就是清空數據表然后爬取數據:

class updateBoardData:

def __init__(self):

self.db = connectMYSQL()

def update(self):

sql = "truncate table board_data;"

con = self.db.connect()

cursor = con.cursor()

cursor.execute(sql)

con.commit

cursor.close()

con.close()

print 'truncated'

process = CrawlerProcess(settings=get_project_settings())

process.crawl(board_spider)

process.start()

雖然單次執行沒問題,但是在每日定時執行的腳本里調用這個類卻出錯了,每日執行的腳本如下,大意就是第一次執行爬蟲后,每天凌晨0點定時執行爬蟲:

SECONDS_PER_DAY = 24 * 60 * 60

upd = updateBoardData()

while True:

upd.update()

print datetime.now()

print 'n'+'n'+'n'+'n'

cur_time = datetime.now()

descTime = cur_time.replace(hour = 0, minute = 0, second = 0, microsecond = 0)

delaytime = cur_time - descTime

skipSeconds = SECONDS_PER_DAY - delaytime.total_seconds()

time.sleep(skipSeconds)

第一次調用該腳本會執行一次爬蟲程序,但是等到0點的時候再次調用爬蟲卻報錯了,報錯信息為:

twisted.internet.error.ReactorNotRestartable

去查了一下twisted框架,發現在twisted中,reactor是單例模式,可能我在重復使用CrawlProcess的時候創建多個reactor實例,于是修改了一下爬蟲的調用腳本測試了一下,只用單個實例來爬蟲,修改后的代碼如下:

class updateBoardData:

def __init__(self):

self.db = connectMYSQL()

self.process = CrawlerProcess(settings=get_project_settings())

self.process.crawl(board_spider)

def update(self):

con = self.db.connect()

cursor = con.cursor()

cursor.execute(sql)

con.commit

cursor.close()

con.close()

print 'truncated'

self.process.start()

a = updateBoardData()

a.update()

print 'pls wait 5s'

time.sleep(5)

a.update()

直接跑這個腳本,發現第一次執行函數沒有問題,但是第二次執行函數的時候知識清空了數據表而爬蟲程序卻沒有執行。執行的結果如下:

2017-01-19 15:40:47 [scrapy] INFO: Spider closed (finished)

pls wait 5s

truncated

到此,我的思路就卡住了,想不出問題處在哪里,定時執行scrapy爬蟲應該是一個很常見的功能,可能是我的思路的方向錯了,到底要怎樣才能每天定時執行一個爬蟲呢?

有沒有人對Scrapy比較熟悉的,能夠給一點意見嗎?

總結

以上是生活随笔為你收集整理的python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。