python学习之旅-第二周week2-3

week2-3作业
学习python的第二周 5.25号完成练习week2-3在爬取58手机号卖家信息中加入断点续传功能
要求如下图所示:

python学习之旅-第二周week2-3_第1张图片
Paste_Image.png

想法:通过数据库新增一个‘状态字段’来表示这个链接是否有爬取过,初始设定为‘未爬取’,每次爬取后改变次字段状态为‘已爬取’

python学习之旅-第二周week2-3_第2张图片
Paste_Image.png

代码部分:

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['连接'])

运行效果如下:

python学习之旅-第二周week2-3_第3张图片
Paste_Image.png

程序可随时停止并随时开启,保障了数据的完成性和不重复性
总结:
--通过练习掌握了一些mongodb的保存等功能修改
--第一次对表结构进行了优化

你可能感兴趣的:(python学习之旅-第二周week2-3)