4.3 构建类目树

首先获取出发地站点,输入以下代码。

import requests
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]:
        print(dep)

代码运行结果如图所示。

然后根据出发地站点获取目的地,继续输入以下代码。

import requests
import urllib
import time
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]:
        print(dep)
        url = 'https://touch.dujia.qunar.com/golfz/sight/arriveRecommend?dep={}&exclude=&extensionImg=255,175'.format(urllib.request.quote(dep))
        time.sleep(1)
        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']:
                    print(query['query'])

代码运行结果如图所示。

通过观察打印结果,发现目的地有多个重复项(在网页上也可以发现),如果基于这个有重复项的类目树获取数据,会造成资源浪费,因此要先对目的地进行去重。接下来在上一段代码中补充去重的代码。

import requests
import urllib
import time
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 = []  #新增去重代码
        print(dep)
        url = 'https://touch.dujia.qunar.com/golfz/sight/arriveRecommend?dep={}&exclude=&extensionImg=255,175'.format(urllib.request.quote(dep))
        time.sleep(1)
        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']:
                    if query['query'] not in a:  #新增去重代码
                        a.append(query['query'])  #新增去重代码
        print(a)

代码运行结果如图所示。

由于去重针对的是每个出发地站点下的目的地,因此需要在获取出发地站点的位置定义一个空的列表a,每一次循环都会重置a。

最后判断目的地是否在列表a中,如果没有就用append(合并)方法将目的地加入到列表a中,代码如下。

if query['query'] not in a:  
      a.append(query['query'])

 

posted @ 2019-06-21 17:49  taoziya  阅读(639)  评论(0)    收藏  举报