“五一”出游堪比春运

简介: python如何爬取马蜂窝数据

最近2天“五一”假期火车票正式开售,作为春节以来第一个真正意义上的小长假,“五一”旅游市场火爆程度受到市场密切关注。根据多家在线旅游平台数据显示,“五一”火车票“卖爆了”。
“五一”抢火车票堪比春运,多条热门线路火车票秒空,旅游订单同比增长超2000%,值得一提的是,近期凭借烧烤出圈的淄博在“五一”假期期间有望成为“顶流”。多个在线旅游平台“五一”期间高铁热门目的地榜单,淄博均位列前十。4月14日、15日两天,“淄博”火车票搜索增幅位居全国第一。不仅是火车票难抢,现在机票,景点门票,酒店预订都越来越难抢到了。现在已经成为了想去哪里玩而是哪里还可以去玩的地步了。
“五一”出游热城市,景点肯定是大家的首选,但是太热门的地方可能玩的不会很尽兴,因为都是人挤人。。作为网络索引擎组成之一。爬虫可以有效的帮助我们搜索和爬取有用的信息,减少很多的烦恼,比如这里我们可以通过python对马蜂窝数据的搜集和爬取整理出一份适合出游又很比较冷门的景点,这样可以给大家出游前有更多的选择。
直接用爬虫程序访问网站会返回521, 因为网站采用了js加密反爬. 其实就是一个js逆向问题, 我们看到的是521, 实际上是进行了三次访问. 每次访问需要带上上一次的cookie。不仅有js逆向网站还限制ip的多次访问,所以这里我们的解决办法就是爬虫程序加上优质代理ip并带上cookie一起去爬取。实现过程如下:

        import base64            
        import sys
        import random

        PY3 = sys.version_info[0] >= 3

        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str

            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理验证信息
                proxyUser = "16IFRWCZ"
                proxyPass = "254565"

                # [版本>=2.6.2](https://docs.scrapy.org/en/latest/news.html?highlight=2.6.2#scrapy-2-6-2-2022-07-25)无需添加验证头,会自动在请求头中设置Proxy-Authorization     
                request.meta['proxy'] = "http://{0}:{1}@{2}:{3}".format(proxyUser,proxyPass,proxyHost,proxyPort)

                # 版本<2.6.2 需要手动添加代理验证头
                # request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
                # request.headers['Proxy-Authorization'] = 'Basic ' +  base64ify(proxyUser + ":" + proxyPass)                    

                # 设置IP切换头(根据需求)
                # tunnel = random.randint(1,10000)
                # request.headers['Proxy-Tunnel'] = str(tunnel)

                # 每次访问后关闭TCP链接,强制每次访问切换IP
                request.header['Connection'] = "Close"
相关文章
|
安全 物联网 iOS开发
2020年春运火车票今天开售;果冻有家,关注年轻人租房子的隐藏需求
2020年春运火车票今天开售;果冻有家,关注年轻人租房子的隐藏需求
419 0
暑假打工赚了数十亿的3岁小孩,要上云啦!
今年暑假,相信很多同学都去刷了《哪吒之魔童降世》,这是一部注定载入中国动画电影史的作品。哪吒也成为有史以来最“吸金”的三岁小孩:以46.79亿元的成绩成为中国影史票房亚军。
7197 0
大疆“自爆”10亿腐败危机,无人机神坛下,副业能否撑起自救重担?
现今的大疆,已经不再只是一家无人机制造厂商了,而是一家“航拍器及解决方案提供商”。
750 0
|
编解码 人工智能 云计算
用球迷的方式,告诉你为什么这届世界杯不卡了
世界杯期间,什么事最痛苦? 如果有某件事比主队输球还要难受的话,那大概只有隔壁宿舍你的情敌疯狂大叫“进了进了进了”的时候,你的电脑上一个小圆圈在滚动……说真的兄弟,这种情况下还能忍,全校都敬你是条汉子。
2885 0
|
UED
清凉一夏!易信3.6版邀您玩转炎炎夏日
本文讲的是 :  清凉一夏!易信3.6版邀您玩转炎炎夏日  , 近日,易信3.6版清凉发布。此次新版主打走心小细节,无论是升级的群管理、激情四射的阿鸡贴图,还是星币广场、礼包中心以及新增的各种小功能,都可以看出易信对于用户体验的用心。
1268 0

热门文章

最新文章