背景
来北京有些日子了,但是每个周末都窝在六环外的村里躺着。想想不能再这么浪费时间了,得出去玩!但是去哪玩呢?于是乎想着,先把北京的景点以及位置都保存起来,然后在分析分析做个出行计划。从哪里获取景点信息呢?也正是最近世界杯马蜂窝的洗脑广告,想着就到马蜂窝上去爬取吧。
前言
本次爬虫使用python开发。自己并不是py工程师,但是还是很喜欢python这门语言的,毕竟人生苦短。所以,一直都想着把python作为一个工具来使用。因此我的目的是达到爬取北京的景点信息,实现了就好。毕竟自己不是专业的,在一些python编程规范以及细节方面,肯定是写得不怎么好,请各位指正。
涉及到的技术点
html
python库
这里我们用到了请求网络的urllib、mysql连接库pymysql、爬虫利器BeautifulSoup库
爬起来!
获取景点url地址
首先,我们需要分析一下马蜂窝的展示景点页面。页面链接地址:http://www.mafengwo.cn/jd/10065/gonglve.html。
我们可以看到这个页面主要介绍了必游景点TOP5、热门景点以及北京全部景点。我们需要从最下方的北京全部景点获取到我们需要的信息。
点击了一下翻页,我们可以发现,这些景点列表是通过post调用这个地址:http://www.mafengwo.cn/ajax/router.php 来获取分页信息。参数如下:{‘sAct’: ‘KMdd_StructWebAjax|GetPoisByTag’, ‘iMddid’: 10065, ‘iTagId’: 0, ‘iPage’: page}。可以猜出,iMddid应该是城市id,iPage是分页页码。返回的也是一个json结构的信息,其中包括了列表的html源码。
这样就比较简单了,只要访问这个地址,解析json以及html就可以获取到每个景点的展示地址嘞。参考代码:
post_url = "http://www.mafengwo.cn/ajax/router.php"
page = 1
# 北京景点一共231页
while page <= 231:
param = {'sAct': 'KMdd_StructWebAjax|GetPoisByTag', 'iMddid': 10065, 'iTagId': 0, 'iPage': page}
# 使用urllib
param = ur