爬取携程和蚂蜂窝的景点评论数据\爬取携程景点评论\爬取旅游网站评论

本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768

前言

  为了获取多源数据需要到各个网站获取一些景点的评论信息和图片,首先选到了携程和蚂蜂窝这两个网站,将一些爬取过程记录下来

携程

分析数据

  首先我们去携程的鼓浪屿景点速览看一下我们要爬取的页面,大概发现有几十个景点,每个景点的结构应该都是差不多的,所以我们选择第一个景点进去看看具体的页面应该怎么爬取。

[站外图片上传中...(image-14bb2e-1513948356467)]

我们需要的是红圈的部分,很容易可以知道这个评论页面是动态加载的,所以不能直接用bs4或者正则直接提取元素,我们需要分析一下页面动态传输的接口。打开chrome审查元素,切换到network查看一下传输的内容,首先清空内容避免干扰,然后点击下一页,我们可以得到

[站外图片上传中...(image-f5a92b-1513948356467)]

通过查看传回的数据我们可以得到这就是我们所要的接口,使用的是post进行传输,传输的Form Data 有很多字段,大致可以猜测出来

poiID 是景点的poiID </br> pagenow 是当前的页数 </br> star 是评分1-5,0代表全部 </br> resourceId 是一个每个资源对应的值

爬取的时候只需要改变这些值就可以根据自己的需求爬取内容了,但是需要注意的事携程的pagenow最多只能获取100页,而且poiID和resourceId的值是没有规律的,需要我们逐个景点查看...我自己依次找了鼓浪屿所有景点的值,并存在文本中,文末有github的共享。

建库

  我们要做的第一件事就是想好数据库的结构,我选择的还是使用mysql,具体的结构如下:

[站外图片上传中...(image-b486a2-1513948356467)]

获取数据

  这个我就不具体分析了,也不难,就是有几个坑要注意一下。

第一,不是所有评论都有景色,性价比之类的评分,所以这里要加一个判断。</br> 第二,原来是有出行时间这一项的,现在好像没有了额。</br> 第三,评论文本可能会出现单引号,插入数据库会出现错误,要转义或者替代一下。</br> 第四,抓取速度不要太快,携程反扒还是比较厉害的。

蚂蜂窝

分析数据

  同样,蚂蜂窝的数据也是动态加载的,用相同的方法查看分析数据接口。

[站外图片上传中...(image-83988-1513948356467)]

可以看到蚂蜂窝的数据获取方式是get,我们可以找出请求的url的规律。经过比较不同景点和不同页面的数据,我们发现参数的改变主要在两个地方,一个是poiid我用href代替,一个是页数我用num代替。获取景点的评论数据只要改变这两个值就可以了

url='http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?callback=jQuery18105332634542482972_1511924148475&params=%7B%22poi_id%22%3A%22{href}%22%2C%22page%22%3A{num}%2C%22just_comment%22%3A1%7D'

获取每个景点的poi

这个不是post请求我们就不必一个个景点去获取参数了,我们可以访问这个站点来发现所有的用户,然而这个站点的数据也是动态加载的

蚂蜂窝
蚂蜂窝

[站外图片上传中...(image-45564c-1513948356467)]

根据上面的图片我们可以清晰的看到我们只需要传入页码数就可以得到所有的景点的poiid,然后根据这些poiid我们就可以得到所有的评论数据,这一部分我们用一个函数来处理

def get_param():
    # 获取所有景点的参数
    total = []
    router_url = 'http://www.mafengwo.cn/ajax/router.php'
    for num in range(1, 6):
        params = {
            'sAct': 'KMdd_StructWebAjax|GetPoisByTag',
            'iMddid': 12522,
            'iTagId': 0,
            'iPage': num
        }
        pos = requests.post(url=router_url, data=params, headers=headers).json()
        soup_pos = BeautifulSoup(pos['data']['list'], 'lxml')

        result = [{'scenery': p['title'], 'href': re.findall(re.compile(r'/poi/(\d+).html'), p['href'])[0]} for p in
                  soup_pos.find_all('a')]
        total.extend(result)

    return total

  其余部分相似,不再过多说明。
1:http://you.ctrip.com/sight/gulangyu120058.html
2:http://you.ctrip.com/sight/gulangyu120058/57405.html
3:http://www.mafengwo.cn/jd/12522/gonglve.htmlonaZhang@Yahoo.com

前言

  为了获取多源数据需要到各个网站获取一些景点的评论信息和图片,首先选到了携程和蚂蜂窝这两个网站,将一些爬取过程记录下来

携程

分析数据

  首先我们去携程的鼓浪屿景点速览看一下我们要爬取的页面,大概发现有几十个景点,每个景点的结构应该都是差不多的,所以我们选择第一个景点进去看看具体的页面应该怎么爬取。

鼓浪屿评论分析

我们需要的是红圈的部分,很容易可以知道这个评论页面是动态加载的,所以不能直接用bs4或者正则直接提取元素,我们需要分析一下页面动态传输的接口。打开chrome审查元素,切换到network查看一下传输的内容,首先清空内容避免干扰,然后点击下一页,我们可以得到

鼓浪屿审查元素

通过查看传回的数据我们可以得到这就是我们所要的接口,使用的是post进行传输,传输的Form Data 有很多字段,大致可以猜测出来

poiID 是景点的poiID </br> pagenow 是当前的页数 </br> star 是评分1-5,0代表全部 </br> resourceId 是一个每个资源对应的值

爬取的时候只需要改变这些值就可以根据自己的需求爬取内容了,但是需要注意的事携程的pagenow最多只能获取100页,而且poiID和resourceId的值是没有规律的,需要我们逐个景点查看...我自己依次找了鼓浪屿所有景点的值,并存在文本中,文末有github的共享。

建库

  我们要做的第一件事就是想好数据库的结构,我选择的还是使用mysql,具体的结构如下:

携程建库

获取数据

  这个我就不具体分析了,也不难,就是有几个坑要注意一下。

第一,不是所有评论都有景色,性价比之类的评分,所以这里要加一个判断。</br> 第二,原来是有出行时间这一项的,现在好像没有了额。</br> 第三,评论文本可能会出现单引号,插入数据库会出现错误,要转义或者替代一下。</br> 第四,抓取速度不要太快,携程反扒还是比较厉害的。

蚂蜂窝

分析数据

  同样,蚂蜂窝的数据也是动态加载的,用相同的方法查看分析数据接口。

蚂蜂窝

可以看到蚂蜂窝的数据获取方式是get,我们可以找出请求的url的规律。经过比较不同景点和不同页面的数据,我们发现参数的改变主要在两个地方,一个是poiid我用href代替,一个是页数我用num代替。获取景点的评论数据只要改变这两个值就可以了

url='http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?callback=jQuery18105332634542482972_1511924148475&params=%7B%22poi_id%22%3A%22{href}%22%2C%22page%22%3A{num}%2C%22just_comment%22%3A1%7D'

获取每个景点的poi

这个不是post请求我们就不必一个个景点去获取参数了,我们可以访问这个站点来发现所有的用户,然而这个站点的数据也是动态加载的

蚂蜂窝
蚂蜂窝

蚂蜂窝

根据上面的图片我们可以清晰的看到我们只需要传入页码数就可以得到所有的景点的poiid,然后根据这些poiid我们就可以得到所有的评论数据,这一部分我们用一个函数来处理

def get_param():
    # 获取所有景点的参数
    total = []
    router_url = 'http://www.mafengwo.cn/ajax/router.php'
    for num in range(1, 6):
        params = {
            'sAct': 'KMdd_StructWebAjax|GetPoisByTag',
            'iMddid': 12522,
            'iTagId': 0,
            'iPage': num
        }
        pos = requests.post(url=router_url, data=params, headers=headers).json()
        soup_pos = BeautifulSoup(pos['data']['list'], 'lxml')

        result = [{'scenery': p['title'], 'href': re.findall(re.compile(r'/poi/(\d+).html'), p['href'])[0]} for p in
                  soup_pos.find_all('a')]
        total.extend(result)

    return total

  其余部分相似,不再过多说明。

个人博客

8aoy1.cn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容