筆記
- 進程與線程的關系
- python中可使用multiprocessing來實現多進程
from multiprocessing import Pool # 自動分配進程數 pool = Pool() # 人工指定進程數 pool = Pool(processes=6) pool.map($functionName, $paraList)
- “主函數”入口聲明:
其具體含義可以參考:https://zhuanlan.zhihu.com/p/21297237if __name__ == '__main__':
作業
-
思路
- 在url入庫時,在記錄中增加一個標記,用于描述該url是否被爬取過。
- 當該url被爬取處理時,更新該標記的值。
- 當爬取任務中斷,再次啟動時,僅過濾查詢尚未爬取過的url繼續爬取。
代碼示意如下:
import pymongo
client = pymongo.MongoClient('localhost', 27017)
test1 = client['test1']
table1 = test1['table1']
# url入庫的時候,增加一個是否已經爬取過的標識 flag=false
table1.insert_one({'url': 'urlxxxxxxxx', 'flag': 'false'})
# 處理時,僅篩選尚未爬取過的url
list = table1.find({'flag': 'false'})
for row in list:
# 爬取處理
# Something !
print(row['_id'])
# 爬取之后,更新是否爬取過的標記 flag=true
table1.update({'_id': row['_id']}, {'$set': {'flag': 'true'}})