当前位置:   article > 正文

携程逆向爬虫 | PC网页端 | 旅游景点评论爬虫

携程逆向

导语

自携程更新后,这是全网首篇,关于新版携程的逆向爬虫

最近由于项目需要,编写了携程逆向爬虫脚本,遇到过一些难点,然而在携程更新网页端之后,也没有大牛写过新的关于携程爬虫的文章。
由于还没有创建github(有点懒),代码需要的可以私信,这里只提供思路和过程
在此,给网友提供思路和全站爬虫效果,有需要的可以私信我

主要难点(坑)如下:

  1. 很多加密参数需要自行测试
  2. payload在爬虫post请求中的使用
  3. 请求到的json数据繁琐,难以分析
  4. 使用postman分析post请求

1. 获取所有城市_id

在这里插入图片描述
利用正则表达式和json解析

def get_city_id_item():
    url = "https://piao.ctrip.com/ticket"
    res_str = requests.get(url=url,headers=headers).content.decode()
    json_str = re.findall('window.__INITIAL_STATE__ = (.*?),"userAgent"',res_str)[0] + '}'
    json_dict = json.loads(json_str)
    city_item = {}
    for city in json_dict['citiesData']['domesticcity']['cities']:
        for i in city['cities']:
            city_item[i['name']] = i['id']
    # print(city_item)
    return city_item
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2. 分析评论信息位置

通过抓包可以发现,评论信息是存放在以下位置的:
在这里插入图片描述

点击旅游景点的第二页和第三页,分析发送的POST请求,以及url链接,这里我们可以发现,每次请求时,post请求对应url链接是不断变化的,我们要通过JS逆向来分析url产生过程,通过execjs来执行逆向后的js。
在这里插入图片描述

逆向过程(略)这里实在是比较复杂,语言不好描述,视频可能方便些。
效果如下:
在这里插入图片描述

3. 获取当前市 景点页数

比如第一个城市安吉,它的旅游景点的页数是304页,一些景点少的,才个位数,所以我们这里不能爬取固定页数,程序很容易报错。
在这里插入图片描述

通过分析发现,这个post请求中存在总旅游景点数,我们用它除以每页的景点数量,可以得到景点页数
在这里插入图片描述

       	r = requests.post(url, data=payloaddata, headers=headers)
        page_num = r.json()['total']//20
        print("{}市共有{}条景点信息,共{}页".format(i[0],r.json()['total'],page_num))
  • 1
  • 2
  • 3

效果:
在这里插入图片描述

4.获取当前景点的评论页数

比如 安吉市第一条,云上草原
在这里插入图片描述
第二条 杭州Hello Kitty乐园
不知道为啥携程把 杭州Hello Kitty乐园 算成安吉的。。。这不是关键
在这里插入图片描述
代码:

detail_item['风景区名称'] = product['basicInfo']['name']
encode_url = get_encode_url()
comment_page_num = product['statistics']['commentInfo']['count'] // 10
print("{}共有{}条评论,页数为:{}".format(detail_item['风景区名称'],product['statistics']['commentInfo']['count'],comment_page_num))
  • 1
  • 2
  • 3
  • 4

效果:
在这里插入图片描述

5. 总体爬虫效果

在这里插入图片描述
在这里插入图片描述

6. 注意

全国景点评论爬虫数据量非常庞大,建议使用分布式爬虫,代理IP,随机UA等等多种反爬手段,提高爬虫稳定性和爬虫效率。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/372200?site
推荐阅读
相关标签
  

闽ICP备14008679号