笔记
- 进程与线程的关系
- 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'}})
网友评论