前言:

Python对于本人来讲也是一个在逐渐学习掌握的过程,这次的内容就从旅游开始讲起,进入正文前首先附(fang)上(du)最令我垂涎欲滴的海鲜盛宴。

数据爬取:

最近几天朋友圈被大家的旅行足迹刷屏了,惊叹于那些把全国所有省基本走遍的朋友。与此同时,也萌生了写一篇旅行相关的内容,本次数据来源于一个对于爬虫十分友好的旅行攻略类网站:蚂蜂窝

PART1:获得城市编号

蚂蜂窝中的所有城市、景点以及其他的一些信息都有一个专属的5位数字编号,我们第一步要做的就是获取城市(直辖市+地级市)的编号,进行后续的进一步分析。

以上两个页面就是我们的城市编码来源,需要首先从目的地页面获得各省编码,之后进入各省城市列表获得编码。过程中需要Selenium进行动态数据爬取,部分代码如下:

deffind_cat_url(url):

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}

req=request.Request(url,headers=headers)

html=urlopen(req)

bsObj=BeautifulSoup(html.read(),"html.parser")

bs=bsObj.find('div',attrs={'class':'hot-list clearfix'}).find_all('dt')

cat_url=[]

cat_name=[]

foriinrange(0,len(bs)):

forjinrange(0,len(bs[i].find_all('a'))):

cat_url.append(bs[i].find_all('a')[j].attrs['href'])

cat_name.append(bs[i].find_all('a')[j].text)

cat_url=['http://www.mafengwo.cn'+cat_url[i]foriinrange(0,len(cat_url))]

returncat_url

deffind_city_url(url_list):

city_name_list=[]

city_url_list=[]

foriinrange(0,len(url_list)):

driver=webdriver.Chrome()

driver.maximize_window()

url=url_list[i].replace('travel-scenic-spot/mafengwo','mdd/citylist')

driver.get(url)

whileTrue:

try:

time.sleep(2)

bs=BeautifulSoup(driver.page_source,'html.parser')

url_set=bs.find_all('a',attrs={'data-type':'目的地'})

city_name_list=city_name_list+[url_set[i].text.replace('n','').split()[0]foriinrange(0,len(url_set))]

city_url_list=city_url_list+[url_set[i].attrs['data-id']foriinrange(0,len(url_set))]

js="var q=document.documentElement.scrollTop=800"

driver.execute_script(js)

time.sleep(2)

driver.find_element_by_class_name('pg-next').click()

except:

break

driver.close()

returncity_name_list,city_url_list

url='http://www.mafengwo.cn/mdd/'

url_list=find_cat_url(url)

city_name_list,city_url_list=find_city_url(url_list)

city=pd.DataFrame({'city':city_name_list,'id':city_url_list})

PART2:获得城市信息

城市数据分别从以下几个页面获取:

(a)小吃页面

(b)景点页面

(c)标签页面

我们将每个城市获取数据的过程封装成函数,每次传入之前获得的城市编码,部分代码如下:

复制编辑

defget_city_info(city_name,city_code):

this_city_base=get_city_base(city_name,city_code)

this_city_jd=get_city_jd(city_name,city_code)

this_city_jd['city_name']=city_name

this_city_jd['total_city_yj']=this_city_base['total_city_yj']

try:

this_city_food=get_city_food(city_name,city_code)

this_city_food['city_name']=city_name

this_city_food['total_city_yj']=this_city_base['total_city_yj']

except:

this_city_food=pd.DataFrame()

returnthis_city_base,this_city_food,this_city_jd

defget_city_base(city_name,city_code):

url='http://www.mafengwo.cn/xc/'+str(city_code)+'/'

bsObj=get_static_url_content(url)

node=bsObj.find('div',{'class':'m-tags'}).find('div',{'class':'bd'}).find_all('a')

tag=[node[i].text.split()[0]foriinrange版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/bf02jgtrs00xktcx/article/details/81024314

站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区相关推荐

  1. python查询高校信息_Python 3爬取全国高校基本信息-Go语言中文社区

    最近接了一个单子,是爬取全国高校的基本信息,高校名字,高校层次,高校地区,招生办电话,招生办官网~ 镇楼图如下: 开发环境:python3.6(最新3.7也可以的) +pycharm 第三放库:req ...

  2. python爬取旅游信息_用Python爬取了全国近5000家旅游景点,分析国庆去哪玩

    2020 国庆马上就要到了 我想今年大家在家都憋坏了 今年国庆和中秋刚好又是同一天,加起来有 8 天假 这么长的假期,当然是出去 玩玩玩! 但是每次长假期间,你有没有想起被人山人海支配的恐惧呢? 那么 ...

  3. 利用python爬取58同城简历数据_利用python爬取58同城简历数据-Go语言中文社区

    利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...

  4. python自动抓取指定信息_使用python自动转发抓取的网页信息

    1.[代码][Python]代码 # -*- coding: utf-8 -*- from selenium import webdriver import time from email.heade ...

  5. python读取日志错误信息_使用Python将Exception异常错误堆栈信息写入日志文件

    假设需要把发生异常错误的信息写入到log.txt日志文件中去: import traceback import logging logging.basicConfig(filename='log.tx ...

  6. python批量录入学生信息_利用Python实现学生信息管理系统的完整实例

    项目要求: 读完题目,首先我们要确定程序思路 我们要全部通过类去实现 也就是 我们要实现管理员.学生.讲师.课程.教师五个类 管理员类 class Administration(object): de ...

  7. python字典输入学生信息_用Python创建一个学生字典并可以查询其中信息

    展开全部 你可以试试这个---------------------------------------------------------- # -*- coding:UTF-8 -*- studen ...

  8. python读取微信群信息_利用Python转发微信群通知信息

    案例:作为班长需要实时转发年级群发布的有关通知.文件到自己班的微信群,这种无脑的重复性工作适用于编写脚本自动帮忙处理. 准备:服务器(可选择阿里云学生服务器).itchat模块.一颗爱折腾的心 代码: ...

  9. python要背的单词_学Python必须背的42个常见单词,看看你都会吗?-Go语言中文社区...

    adult [ˈædʌlt] 成年人 authentication [ɔːˌθentɪˈkeɪʃn] 身份验证.认证.鉴定 bit [bɪt] 稍微.小量.小块.一点 byte [baɪt] 字节.位 ...

最新文章

  1. 计算机科学家证明,为什么更大的神经网络可以做得更好
  2. 面试题 flex(二)
  3. Administer Service Cloud
  4. 也谈1+2+3+...+n的解答
  5. 数学--数论--HDU 6128 Inverse of sum (公式推导论)
  6. 敏捷制造:并不是你想像的矛盾体
  7. php5 mongodb,ThinkPHP5之Mongodb使用技巧
  8. flowable实现流程回退功能
  9. 计算机的复数英语怎么读,英语的复数怎么读
  10. bool类型数组转换成一个整数_Go 学习笔记 02 | 基本数据类型以及 byte 和 rune 类型...
  11. js验证家庭住址_手摇充电电筒、多功能组合剪刀……官方清单建议上海家庭储备13种应急物资...
  12. 用turtle库画五角星
  13. 转 - 受益终生的十大经典管理学定律
  14. 06.Android之消息机制问题
  15. centos7 中彻底卸载mysql
  16. 怎样让计算机默认记事本格式,电脑记事本怎么改格式
  17. 文件后缀名批量修改工具
  18. 使用OpenSSL库函数测试AES-CCM加密算法
  19. 时钟树综合CTS技术经验分享(高薪必备)
  20. 分组求和并排序python_【Python】如何对某一列自动分组,统计求和

热门文章

  1. 平面设计转UI设计难吗?
  2. 图片识别 python 神经网络,人工神经网络图像识别
  3. 如何无损增大C盘容量
  4. clipboard.js实现无flash复制内容到剪贴板
  5. 来答疑了!关于网易云信 Innovation 2022 开发者大赛,你想知道的都在这儿!
  6. 数据结构(十六)——左高树(含合并过程详细图解)
  7. COW(寒假每日一题 19)
  8. html 破折号自动换行,HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
  9. Google Code注册方法详解 Google Code网盘申请方法 1
  10. 48 《自私的基因》 -豆瓣评分8.6