week2-3作業(yè)
學(xué)習(xí)python的第二周 5.25號完成練習(xí)week2-3在爬取58手機號賣家信息中加入斷點續(xù)傳功能
要求如下圖所示:
想法:通過數(shù)據(jù)庫新增一個‘狀態(tài)字段’來表示這個鏈接是否有爬取過徒溪,初始設(shè)定為‘未爬取’靶瘸,每次爬取后改變次字段狀態(tài)為‘已爬取’
代碼部分:
def update_message(url):
for message in phone_message_state.find({'連接':url}):
data ={
'_id':message['_id'],
'標題':message['標題'],
'連接':message['連接'],
'狀態(tài)':'已爬取',
}
phone_message_state.save(data)
return
每當從鏈接中成功爬取一個賣家信息時,改變鏈接表中的狀態(tài)值,在查詢時根據(jù)這個字段做判讀查詢
for message in phone_message_state.find({'狀態(tài)':'未爬取'}):
print('爬取進度=' + str((phone_message_state.count({'狀態(tài)': '已爬取'}) / phone_message_state.count({'狀態(tài)': '未爬取'}))*100)+'%')
#if判斷排除幾個選好網(wǎng)的推薦
if 'http://bj.58.com/shoujihao/' in message['連接']:
#print(message['連接'])
get_phone_message(message['連接'])
else:
update_message(message['連接'])
運行效果如下:
程序可隨時停止并隨時開啟,保障了數(shù)據(jù)的完成性和不重復(fù)性
總結(jié):
--通過練習(xí)掌握了一些mongodb的保存等功能修改
--第一次對表結(jié)構(gòu)進行了優(yōu)化