week2-3作业
学习python的第二周 5.25号完成练习week2-3在爬取58手机号卖家信息中加入断点续传功能
要求如下图所示:
想法:通过数据库新增一个‘状态字段’来表示这个链接是否有爬取过,初始设定为‘未爬取’,每次爬取后改变次字段状态为‘已爬取’
代码部分:
def update_message(url):
for message in phone_message_state.find({'连接':url}):
data ={
'_id':message['_id'],
'标题':message['标题'],
'连接':message['连接'],
'状态':'已爬取',
}
phone_message_state.save(data)
return
每当从链接中成功爬取一个卖家信息时,改变链接表中的状态值,在查询时根据这个字段做判读查询
for message in phone_message_state.find({'状态':'未爬取'}):
print('爬取进度=' + str((phone_message_state.count({'状态': '已爬取'}) / phone_message_state.count({'状态': '未爬取'}))*100)+'%')
#if判断排除几个选好网的推荐
if 'http://bj.58.com/shoujihao/' in message['连接']:
#print(message['连接'])
get_phone_message(message['连接'])
else:
update_message(message['连接'])
运行效果如下:
程序可随时停止并随时开启,保障了数据的完成性和不重复性
总结:
--通过练习掌握了一些mongodb的保存等功能修改
--第一次对表结构进行了优化