赞
踩
参考用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高‘’一文,我们可以到去哪儿网站上爬取某个城市,比如厦门的旅游数据,并且在此基础上进行数据分析。下面简单总结一下爬取的过程。
我们开发者工具(快捷键ctrl+shift+I)可以进入上图界面,点击Network之后再搜索框当中输入json,我们就可以看到json数据的url,并且总结出url的格式如下:
url = f'http://piao.qunar.com/ticket/list.json?keyword={keyword}®ion=&from=mpl_search_suggest&page={page}'
这里面有一个siteList的列表,里面包含我们需要的旅游景点的信息:
这样,我们就可以根据这个url的结构编写python程序进行网络爬虫了。
我们需要使用fake_useragent中的用户代理来随机伪装,然后通过request方法对以上的url进行请求,返回得到模拟点击的json数据之后进行解析,我这里采用的手动解析的方法,可以研究一下是否有更方便的解析函数可以一步到位。
最后我们得到的是一个字典列表,即sightList,通过csv.DictWrite工具,我们可以把这个列表写入到csv文件中,注意这个工具有一个filedname的参数列表,表示我这个csv表格的表头有哪一些,这些表头参数,我通过一个全局变量key_set和diclst在过程中进行搜集了。
import requests import random from time import sleep import csv import pandas as pd from fake_useragent import UserAgent import pinyin key_set = set() diclst = [] def get_data(keyword,page): global key_set global diclst ua = UserAgent(verify_ssl=False) headers = {"User-Agent": ua.random} url = f'http://piao.qunar.com/ticket/list.json?keyword={keyword}®ion=&from=mpl_search_suggest&page={page}' res = requests.request("GET", url,headers=headers) sleep(random.uniform(1, 2)) try: res_json = res.json() sight_List = res_json['data']['sightList'] for sight in sight_List: if 'childrenList' in sight.keys(): print('There is a childrenList') childrenlist = sight['childrenList'] for children in childrenlist: key_set.update(children.keys()) key_set.update(sight.keys()) diclst.append(sight) print(sight) except: pass return diclst if __name__ == '__main__': keyword = "杭州" csvfilename = pinyin.get(keyword, format='strip', delimiter="_") sight_lists = [] for page in range(1,40): #控制页数 print(f"正在提取第{page}页") sleep(random.uniform(1, 2)) sight_list = get_data(keyword,page) sight_lists.extend(sight_list) print(sight_lists) for sight in sight_lists: print(sight) with open(csvfilename+'.csv', 'w', encoding='utf8', newline='') as output_file: #print(res_json) try: toCSV = sight_lists fc = csv.DictWriter(output_file, fieldnames=key_set) fc.writeheader() fc.writerows(toCSV) except : pass
我们可以设置keyword参数为对应的城市,比如“北京”、“杭州”、“上海”等,然后用page控制爬取的页数,以上程序会自动保存成对应的csv文件,把响应的信息保存下来,效果如下:
csv的截图如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。