在上文中我們主要定義了兩個資料庫,乙個是儲存表mysql的儲存設定,還有乙個就是redis初始化設定,包括取資料,計數等功能函式的設定。沒有看過的小夥伴請移步打造乙個輕量級企業基本資訊採集框架(二),本文主要對如何實現排程器,對url進行排程以及設定。
# -*- coding: utf-8 -*-
from config import
*from utils import
*from db_connect import redisdbconn,dbcollect
from loguru import logger
from cutent import
*import sys
from crawl_spider import
*class
(object):
def__init__
(self)
: self.client = redisdbconn(
) self.db = dbcollect(
) self.init_status = init_status
self.cut = cutentername(
)def
entry_data
(self)
:"""
將原有的資料庫內的keywords放進redis有序集合中
:return:
"""keywords_list = self.db.connect_db(
)for keyword in keywords_list:
self.client.initial_set(keyword)
defrun
(self)
:try
: count = self.client.get_count(self.init_status)
logger.info(
"目前還剩餘~~~~"
+str
(count)
+"個keywords未採集哦..."
)for i in
range
(count)
: keyword_list = self.client.get_data(self.init_status)
if keyword_list:
for params in crawlurl(
).get_params(keyword_list)
: self.cut.cutentername(params[
"entname"])
sys.stdout.flush(
) time.sleep(random.randint(2,
5))except exception as e:
logger.debug(
"採集指令碼發生錯誤"
+str
(e.args)
)
將這些**放入crawl_basicinfo.py內,run()函式是這個指令碼的開始,因為redis內已經有資料,我就沒有再新增資料了,自己可以自行設定,得到keyword以後,我們將其傳入到crawlurl這個類的get_params函式,這個函式的作用就是構造請求data,如下:
def
get_params
(self, datalist)
:"""
構造請求引數
:param datalist:
:return:
"""for keyword in datalist:
params =
,"sourcetype"
:"i"
} data = json.dumps(params, ensure_ascii=
false
).encode(
"utf-8"
)for req_param in self.collect_data(data,keyword.decode())
:yield req_param
這樣子乙個簡單的排程器就完成了,其實吧也算不上什麼排程器,就是函式之間的傳參、返回而已。感興趣的小夥伴可以自己嘗試寫一下,我們下篇文章再見。打造乙個輕量級企業基本資訊採集框架(四) 打造乙個輕量級企業基本資訊採集框架(四)
我們話不多說,show your code!def req data url,data,page,keyword,timeout 10,proxies none 用來請求採集 param data 請求引數 param url url param page 頁數 return html count ...
打造乙個輕量級企業基本資訊採集框架(七)
在前面六篇系列的文章中,我們已經初步搭建了乙個企業基本資訊採集框架,但是從可配置性以及視覺化方面還有很多地方需要去完善。這篇文章我們對schedule.py這個檔案做一些整體的修改,使其看上去更加符合我們的平常需求。我在原有的框架上面,又建立了乙個start crawl.py這個檔案來啟動全域性,主...
peewee 乙個輕量級的ORM 四
class database last insert id cursor,model parameters return type 最後乙個插入的記錄的那行的主鍵,不一定非得叫 id rows affected cursor return type 受影響的行數 create table model...