zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然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)

  • 相关阅读:
    Druid 使用 Kafka 将数据载入到 Kafka
    Druid 使用 Kafka 数据加载教程——下载和启动 Kafka
    Druid 集群方式部署 —— 启动服务
    Druid 集群方式部署 —— 端口调整
    Druid 集群方式部署 —— 配置调整
    Druid 集群方式部署 —— 配置 Zookeeper 连接
    Druid 集群方式部署 —— 元数据和深度存储
    Druid 集群方式部署 —— 从独立服务器部署上合并到集群的硬件配置
    Druid 集群方式部署 —— 选择硬件
    Druid 独立服务器方式部署文档
  • 原文地址:https://www.cnblogs.com/tszr/p/12198054.html
Copyright © 2011-2022 走看看