专栏名称: CDA数据分析师
CDA数据分析师品牌官方微信,开放、创新、分享。
目录
相关文章推荐
CDA数据分析师  ·  【干货】如何让数据开口说话?这几款工具帮你快 ... ·  22 小时前  
软件定义世界(SDX)  ·  最新对话|吴恩达评AI Agents现状! ·  4 天前  
数局  ·  突发!杭州西子电梯总裁跳楼 ·  昨天  
51好读  ›  专栏  ›  CDA数据分析师

我用 Python 爬取了全国 4500 个热门景点,告诉你国庆哪里去不得?

CDA数据分析师  · 公众号  · 大数据  · 2017-09-20 18:08

正文

请到「今天看啥」查看全文


i:
page = getPage(url.format(i))
selector = etree.HTML(page)
print '正在爬取第' + str(i) + '页景点信息'
i+= 1
informations = selector.xpath( '//div[@class="result_list"]/div' )
for inf in informations: #获取必要信息
sight_name = inf.xpath( './div/div/h3/a/text()' )[ 0 ]
sight_level = inf.xpath( './/span[@class="level"]/text()' )
if len(sight_level):
sight_level = sight_level[ 0 ].replace( '景区' , '' )
else :
sight_level = 0
sight_area = inf.xpath( './/span[@class="area"]/a/text()' )[ 0 ]
sight_hot = inf.xpath( './/span[@class="product_star_level"]//span/text()' )[ 0 ].replace( '热度 ' , '' )
sight_add = inf.xpath( './/p[@class="address color999"]/span/text()' )[ 0 ]
sight_add = re.sub( '地址:|(.*?)|\(.*?\)|,.*?$|\/.*?$' , '' ,str(sight_add))
sight_slogen = inf.xpath( './/div[@class="intro color999"]/text()' )[ 0 ]
sight_price = inf.xpath( './/span[@class="sight_item_price"]/em/text()' )
if len(sight_price):
sight_price = sight_price[ 0 ]
else :
i = 0
break
sight_soldnum = inf.xpath( './/span[@class="hot_num"]/text()' )[ 0 ]
sight_url = inf.xpath( './/h3/a[@class="name"]/@href' )[ 0 ]
sightlist.append([sight_name,sight_level,sight_area,float(sight_price),int(sight_soldnum),float(sight_hot),sight_add.replace( '地址:' , '' ),sight_slogen,sight_url])
time.sleep( 3 )
return sightlist,place
  • 这里把每个景点的所有信息都爬下来了(其实是为了练习使用 xpath……)。

  • 使用了 while 循环,for 循环的 break 的方式是发现无销量时给 i 值赋零,这样 while 循环也会同时结束。

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


输出本地文本

为了防止代码运行错误,维护代码运行的和平,将输出的信息列表存入到 excel 文件中了,方便日后查阅,很简单的代码,需要了解 pandas 的用法。

def listToExcel(list,name):
   df = pd.DataFrame(list,columns=['景点名称','级别','所在区域','起步价','销售量','热度','地址','标语','详情网址'])
   df.to_excel(name + '景点信息.xlsx')


百度经纬度 API

非常悲伤的,(ಥ﹏ಥ)我没找到去哪儿景点的经纬度,以为这次学(zhuang)习(bi)计划要就此流产了。(如果有人知道景点经纬度在哪里请告诉我)


但是,enhahhahahaha,我怎么会放弃呢,我又找到了百度经纬度 API。


网址: http://api.map.baidu.com/geocoder/v2/?address=地址&output=json&ak=百度密钥 修改网址里的“地址”和“百度密钥”,在浏览器打开,就可以看到经纬度的 json 信息

#上海市东方明珠的经纬度信息






请到「今天看啥」查看全文