吴裕雄--天生自然PYTHON爬虫:爬取某一大型电商网站的商品数据(优化)
作者:互联网
本博文主要是对我的这篇:https://www.cnblogs.com/tszr/p/12193744.html爬取某一大型电商网站的商品数据博文代码的优化和整理。
代码优化可以提高代码的可读性。
import time import json import pymongo import requests import urllib.request #使用MongoDB创建数据库、表 client = pymongo.MongoClient('localhost',27017) book_qunar = client['qunarr'] sheet_qunar_zyx = book_qunar['qunar_zyxx'] def get_list(dep,item): url = 'https://touch.dujia.qunar.com/list?modules=list%2CbookingInfo%2CactivityDetail&dep={}&query={}&dappDealTrace=true&mobFunction=%E6%89%A9%E5%B1%95%E8%87%AA%E7%94%B1%E8%A1%8C&cfrom=zyx&it=dujia_hy_destination&date=&needNoResult=true&originalquery={}&limit=0,24&includeAD=true&qsact=search'.format(urllib.request.quote(dep),urllib.request.quote(item),urllib.request.quote(item)) time.sleep(3) strhtml = requests.get(url) #获取当前目的地的产品数量 routeCount = int(strhtml.json()['data']['limit']['routeCount']) for limit in range(0,routeCount,24): url = 'https://touch.dujia.qunar.com/list?modules=list%2CbookingInfo%2CactivityDetail&dep={}&query={}&dappDealTrace=true&mobFunction=%E6%89%A9%E5%B1%95%E8%87%AA%E7%94%B1%E8%A1%8C&cfrom=zyx&it=dujia_hy_destination&date=&needNoResult=true&originalquery={}&limit={},24&includeAD=true&qsact=search'.format(urllib.request.quote(dep),urllib.request.quote(item),urllib.request.quote(item),limit) time.sleep(3) strhtml = requests.get(url) #用一个字典保存当前这个产品的信息 result = { 'date':time.strftime('%Y-%m-%d',time.localtime(time.time())), 'dep':dep, 'arrive':item, 'limit':limit, 'result':strhtml.json() } #向数据库中插入这条产品信息记录 sheet_qunar_zyx.insert_one(result) def get_json(url): strhtml = requests.get(url) time.sleep(3) return strhtml.json() if __name__ == '__main__': #获取产品 url = 'https://touch.dujia.qunar.com/depCities.qunar' strhtml = requests.get(url) dep_dict = strhtml.json() for dep_item in dep_dict['data']: for dep in dep_dict['data'][dep_item]: #这里声明一个列表a用来保存当前这个出发点对应的所有目的地 a = [] url = 'https://touch.dujia.qunar.com/golfz/sight/arriveRecommend?dep={}&exclude=&extensionImg=255,175'.format(urllib.request.quote(dep)) time.sleep(3) strhtml = requests.get(url) arrive_dict = strhtml.json() for arr_item in arrive_dict['data']: for arr_item_1 in arr_item['subModules']: for query in arr_item_1['items']: #如果当前这个目的地不在a中的话,那就添加进去,否则不添加,这样就可以达到目的地去重的目的了 if(query['query'] not in a): a.append(query['query']) #逐个地取出当前出发点对应的目的地item for item in a: get_list(dep,item) #再写一个程序用来定时监控运行结果 while True: print(sheet_qunar_zyx.find().count()) time.sleep(10)
#再写一个程序用来定时监控运行结果(新建一个文件)来运行,记得要导入对应的文件 while True: print(sheet_qunar_zyx.find().count()) time.sleep(10)
标签:item,PYTHON,strhtml,爬取,dep,url,time,电商,qunar 来源: https://www.cnblogs.com/tszr/p/12198054.html