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

前言:

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

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区_第1张图片

数据爬取:

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

PART1:获得城市编号

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

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区_第2张图片

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区_第3张图片

以上两个页面就是我们的城市编码来源,需要首先从目的地页面获得各省编码,之后进入各省城市列表获得编码。过程中需要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)小吃页面

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区_第4张图片

(b)景点页面

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区_第5张图片

(c)标签页面

python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区_第6张图片

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

复制编辑

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爬取旅游信息)