“五一”出游堪比春运

简介: 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"
相关文章
|
7月前
|
存储 C++
【寒假打卡】Day01
【寒假打卡】Day01
46 0
|
7月前
【寒假打卡】Day02
【寒假打卡】Day02
51 0
|
安全 物联网 iOS开发
2020年春运火车票今天开售;果冻有家,关注年轻人租房子的隐藏需求
2020年春运火车票今天开售;果冻有家,关注年轻人租房子的隐藏需求
446 0
暑假打工赚了数十亿的3岁小孩,要上云啦!
今年暑假,相信很多同学都去刷了《哪吒之魔童降世》,这是一部注定载入中国动画电影史的作品。哪吒也成为有史以来最“吸金”的三岁小孩:以46.79亿元的成绩成为中国影史票房亚军。
7248 0
9月14日新闻联播:拼多多股价暴涨黄铮身价赶超雷军,大众宣布2019年停止生产甲壳虫
拼多多三天累计涨40%,黄峥身家超越雷军和丁磊;大众将于2019年停止生产甲壳虫紧凑型轿车,曾经风靡一时的经典车型即将落幕;太空旅行马上就要成为现实了,SpaceX签下全球首位绕月飞行私人乘客!一起来看今天的科技快讯!
2286 0