break

‘User-Agent’:’Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113
Safari/537.36′

百度了一晃,能够在地面创设一个服务器,在巅峰进入到html文件所在文件夹,输入python
-m
SimpleHTTPServer,再在浏览器中开拓http://127.0.0.1:8000/,记得要将html文件名设置成index.html哦~

1.那里把各类景点的装有音信都爬下来了(其实是为了练兵使用xpath……)。

}

#水户市东方明珠的中纬度音信

有人或许说,我曾经懂了api是啥意思了,可是咋个用吧。关于那点,米酱很负总责的告知您:自己也不会

json_data=requests.get(url=url).json()

此间运用了jQuery之后,即使网页调试成功了,在地点打开也无法出示网页了,在chrome中右键检查,发现报错提醒是索要在服务器上显示,然则,服务器是何许呢?

json_data=requests.get(url=url).json()

sight_price=sight_price[0]

各州旅游景点销售起步价

还有那样的

sight_url=inf.xpath(‘.//h3/a[@class=”name”]/@href’)[0]

address=l[2]

那些城市有辣么多热门景点,都是些什么级其他青山绿水呢?由下图看来,各城市的各级别景点基本与都市总热门景点呈正相关,而且重点由4A景区进献而来。

url=’http://piao.qunar.com/ticket/list.htm?keyword='+str(place)+'®ion=&from=mpl\_search\_suggest&page={}

将第二章中所述的百度地图api示例中的源代码复制到解释器中,添加密钥,保存为html文件,打开就足以看看和官网上平等的呈现效果。echarts必要在实例页面,点击页面右上角的EN切换来英文版,然后点击download
demo下载完整源代码。

百度密钥申请形式

df.to_excel(name+’景点音讯.xlsx’)

这一次没有用正则来协作内容,而利用了xpath匹配,肥肠好用。

4.出口本地文件

将地图上热门景点的销量top20领到出来,大部分都是驾轻就熟的地点,帝都的紫禁城排在了首位,而大四川则占据了top5中的三位,而排在top20中也福建省就占了6位,即使不是因为地震,我想还会有愈多的热烈的光景进入排名榜的~那样看来若是您这一次国庆打算去青海来说,可以脑补到的场景就是:人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人……

那么难题来了,去何方玩啊?百度输了个”国庆”,出来的率先条居然是”去哪儿旅游人少”……emmmmmmm,因缺思厅。

iflen(sight_level):

1.百度的地图API和echarts

ejsonlist1=[]

try:

json_geo=json_data[‘result’][‘location’]

引入数据后的百度热力图

因为前两遍爬虫都是爬一些文本音讯,做一下词云之类的,中二の我觉着:没!意!思!了!本次正好爬的是数据,我主宰用数据的好基友——图表来输出我爬取的多少,也就是说我要用爬取的山山水水销量以及景色的具体地点来生成一些可视化数据。

然鹅,尽管去掉了复杂音信,还有一些卓殊不到的风物地址,于是我使用了嵌套try,即使景点地址匹配不到;就合作景点名称,即使景点名称匹配不到;就极度景点所在区域,若是如故万分不到,那我……那我就……这我就跳过ㄒ_ㄒ……身为一个光景,你怎么能,这么难找呢!不要你了!

try:

sight_level=inf.xpath(‘.//span[@class=”level”]/text()’)

}

此地生成的四个json文件,一个是给百度地图api引入用的,另俩个是给echarts引入用的。

url=’http://api.map.baidu.com/geocoder/v2/?address='+address+'&output=json&ak='+ak

i=0

{“status”:0,”result”:{“location”:{“lng”:121.5064701060957,”lat”:31.245341811634675},”precise”:1,”confidence”:70,”level”:”UNKNOWN”}}

在装置获取经纬度的地址时,为了合营到更纯粹的经纬度,我选用了同盟景点地址,然鹅,景点地址里有各类神奇的地址,带括号解释在XX对面的,说一堆你应该左拐右拐种种拐就能到的,还有英文的……于是就有了第三章中复杂的删减音信(我到底圆回来了!)。

i=1

defgetList():

print’正在转变第’+str(num)+’个风景的中纬度’

continue

list=sightlist

headers={

withopen(‘./data.json’,”w”)asf:

ejsonlist2=json.dumps(ejsonlist2,ensure_ascii=False)

这种[{x:x,x:x},{x:x,x:x}]格式的多寡,是一种json格式的多寡,由于具有本身描述性,所以相比较通俗易懂,大致可以精通那里的三个值,前俩个是经纬度,最后一个应当是权重(我猜的)。

重视城市热门景点数.png

bjsonlist.append(json_geo)

deflistToExcel(list,name):

json_geo=json_data[‘result’][‘location’]

sight_soldnum=inf.xpath(‘.//span[@class=”hot_num”]/text()’)[0]

重中之重城市热门景点级别

分析去哪个地方景点页的网址可得出结构:搜索地方®ion=&from=mplsearchsuggest&page=页数

address=l[6]

sightlist.append([sight_name,sight_level,sight_area,float(sight_price),int(sight_soldnum),float(sight_hot),sight_add.replace(‘地址:’,”),sight_slogen,sight_url])

sight_name=inf.xpath(‘./div/div/h3/a/text()’)[0]

百度地图提供了重重API使用示例,有html基础,大概可以看懂,有js基础就足以尝尝改函数了(不会jsの我默默地复制源代码),仔细观看源代码,可以清楚热力图的生成紧要的多寡都存放在points这几个变量中。

也就是说,倘若自己梦想将风景的紧俏程度生成为热力图,我急需得到景点的中纬度,以及它的权重,景点的销量可以视作权重,并且这几个数据应该是json格式的显示格局。

那个地图上很霸道的区域,我想在国庆光景是那样的

ejson2={‘name’:l[0],’value’:l[4]/100}

5.百度经纬度api

于是自己又做了一个各城市蕴藏热门景点数目标排行,没悟出在4千多少个热门景点中,数目最多的仍旧自家大河北,是第一个城市的1.5倍,而香江市作为福冈市也……可以说是景点数/总面积的首先位了。

因而api对♂接的开发者与服务商

ejsonlist2=[]

3.地点的匹配使用re.sub()函数去除了n多复杂信息,那点前面解释。

headers={

selector=etree.HTML(page)

‘User-Agent’:’Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113
Safari/537.36′

看好景点销量top20

为此本次的对象吗,是爬去哪儿网景点页面,并获得景点的信息,咱们可以先探究下几乎须要几步。

sight_hot=inf.xpath(‘.//span[@class=”product_star_level”]//span/text()’)[0].replace(‘热度
‘,”)

json_data=requests.get(url=url).json()

bjsonlist=[]

http://www.google-analytics.com/ga.js">
src=””>http://libs.baidu.com/jquery/2.0.0/jquery.js">

热门景点示意图

于是乎我萌生了经过游览网站的风光销量来判断近来各景点流量意况的想法(那么些想法很凶险啊)。

informations=selector.xpath(‘//div[@class=”result_list”]/div’)

金秋六月,丹桂飘香,在那秋高气爽,阳光灿烂的获取时节里,大家送走了一个个暑假余额耗尽哭着走向校园的孩籽们,又即将迎来一年一度伟大祖国姨妈的生日趴体(无心上班,等不及想为祖国二姨庆生!)。

defgetBaiduGeo(sightlist,name):

肥肠痛苦的,(ಥ﹏ಥ)我没找到去何地景点的中纬度,以为这一次学(zhuang)习(bi)安排要就此新生儿窒息了。(即使有人知晓景点经纬度在哪个地方请告诉我)

再按照自己上一篇文的覆辙来讲,米酱的小说写完呀!但她还想把小说出成书,不过怎么出书捏?米酱不会呀,那时候米酱发现某出版社提供了出版服务,出版社表示只必要提供小说的正文、以及一个设计的封面就可以啊,于是米酱将随笔保存成了word格式,又画了个封面jpg图,发给了出版社,没过多长时间米酱就得到了一本装订好的书啊(此段纯属虚构,专业出版人物即便打自己,我不会认可的)。

bjsonlist=json.dumps(bjsonlist)

sight_add=inf.xpath(‘.//p[@class=”address
color999″]/span/text()’)[0]

num=1

f.write(bjsonlist)

exceptKeyError,e:

sight_area=inf.xpath(‘.//span[@class=”area”]/a/text()’)[0]

page=getPage(url.format(i))

ejson1={l[0]:[json_geo[‘lng’],json_geo[‘lat’]]}

i+=1

json_geo=json_data[‘result’][‘location’]

withopen(‘./points.json’,”w”)asf:

sight_add=re.sub(‘地址:|(.*?)|(.*?)|,.*?$|/.*?$’,”,str(sight_add))

API是如何,API是应用程序的编程接口,就恍如插头与插座一样,大家的主次要求电(那是如何程序?),插座中提供了电,我们只需求在先后中写一个与插座匹配的插头接口,就可以运用电来做大家想做的业务,而不需求明白电是何许暴发的。

如此自己就可以依照爬到的景物地址,查到相应的中纬度辣!python获取经纬度json数据的代码如下。

6.网页读取json文件

在米酱出书的历程中,米酱并不须求知道出版社是怎么印刷那一个书的,也不要求领会是怎么装订那一个书的,米酱只须求提供出版社所需要的东西即可。

url=’http://api.map.baidu.com/geocoder/v2/?address='+address+'&output=json&ak='+ak

sight_price=inf.xpath(‘.//span[@class=”sight_item_price”]/em/text()’)

exceptKeyError,e:

sight_level=0

ak=’密钥’

ak=’密钥’

ejsonlist1=dict(ejsonlist1,**ejson1)

安利一下百度的地图API和echarts,前者是特地提供地图API的工具,听说好多APP都在用它,后者是数额处理居家旅行的好伙伴,用了后来,它好,我可以(隐隐觉得哪个地方不对)。

(╯’ – ‘)╯┻━┻

7.后记

address=l[0]

url=’http://api.map.baidu.com/geocoder/v2/?address='+address+'&output=json&ak='+ak

df=pd.DataFrame(list,columns=[‘景点名称’,’级别’,’所在区域’,’起步价’,’销售量’,’热度’,’地址’,’标语’,’详情网址’])

returnsightlist,place

json_data=requests.get(url=url).json()

f.write(ejsonlist2)

time.sleep(3)

f.write(ejsonlist1)

else:

既然如此去哪些地方人多,去哪儿景多都早已驾驭了,那再看看去哪些地点烧得钱最多啊?下图是由各城市风景销售起步价的最大值-最小值扇形组成的圆,其中西藏以单景点销售起步价600占用第三位,但也足以见到,吉林的风光销售均价并不高(在新民主主义革命扇形中的藏黑色线条)。而一旦国庆去香岛玩,请做好钱包减肥的心绪和生理准备(•̀ω•́)✧。

try:

sight_slogen=inf.xpath(‘.//div[@class=”intro color999″]/text()’)[0]

但是!

withopen(‘./geoCoordMap.json’,”w”)asf:

echarts也是千篇一律滴(^__^)。

ejsonlist2.append(ejson2)

2.确定输出文件

json_geo[‘count’]=l[4]/100

whilei:

url=’http://api.map.baidu.com/geocoder/v2/?address='+address+'&output=json&ak='+ak

forinfininformations:#取得要求音讯

解析网址(去何方景点)→爬取分页中音讯(景点经纬度、销量)→转为json文件。

基于html导入json文件修改网页源码,导入json文件。

前言:本文提出有肯定Python基础和前端(html,js)基础的盆友阅读,零基础可以去看本身之前的文。(咳咳,不可能总更小白文,那样显得自己不(mei)够(you)专(xue)业(xi))。

小编:大吉大利三星酱

来源:http://www.jianshu.com/p/b7627e67b6b9

defgetBaiduGeo(sightlist,name):

然则,enhahhahahaha,我怎么会扬弃吧,我又找到了百度经纬度api,网址:地址&output=json&ak=百度密钥,修改网址里的”地址”和”百度密钥”,在浏览器打开,就足以见到经纬度的json音讯。

forlinlist:

address=地址

3.爬取多少

sight_level=sight_level[0].replace(‘景区’,”)

为了防患代码运行错误,为了维护代码运行的和平,将出口的信息列表存入到excel文件中了,方便日后查阅,很简短的代码,须求了然pandas的用法。

num+=1

iflen(sight_price):

实质上本次的爬虫部分是相比简单的(假诺你有跟着自己的文爬过网站的话)。

json_geo=json_data[‘result’][‘location’]

sightlist=[]

热门景点热力图

exceptKeyError,e:

else:

print’正在爬取第’+str(i)+’页景点音讯’

#百度地图api示例代码中各岗位修改部分

这样的

ejsonlist1=json.dumps(ejsonlist1,ensure_ascii=False)

好啊分析完呀,ヾ(*ΦωΦ)ツ我们可要好好玩呀。

观望获取的json文件,location中的数据和百度api所急需的json格式基本是同等,还需求将风景销量插足到json文件中,那里能够精通一下json的浅拷贝和深拷贝知识,最终将整治好的json文件输出到地头文件中。

2.选用了while循环,for循环的break的主意是发现无销量时给i值赋零,这样while循环也会同时终止。

因为注册但未曾表明开发者账号,所以每一天只能获取6K个经纬度api(那是一个很好的偷懒理由),所以自己选用了热点景点中前400页(每页15个)的景色,结果简单的讲,(ಥ﹏ಥ)为了调试因为数量增多出现的额外bug,最后的收获的青山绿水数据差不离在4k5条左右(爬取时间为二〇一七年0一月10日,爬取关键词:热门景点,仅表示即刻销量)。

place=raw_input(‘请输入想搜寻的区域、类型(如上海市、热门景点等):’)

相关文章

网站地图xml地图