最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python爬取13个旅游城市,告诉你大家最爱去哪玩?

    正文概述    2020-06-22   216

    Python爬取13个旅游城市,告诉你大家最爱去哪玩?

    通过分析去哪儿网部分城市门票售卖情况,简单的分析一下哪些景点比较受欢迎。

    用到的Python模块

    BeautifulSoup、requests、pymongo、pylab

    方法

    通过请求https://piao.qunar.com/ticket/list.htm?keyword=北京  ,获取北京地区热门景区信息,再通过BeautifulSoup去分析提取出我们需要的信息。

    这里为了偷懒只爬取了前4页的景点信息,每页有15个景点。因为去哪儿并没有什么反爬措施,所以直接请求就可以了。

    这里只是随机选择了13个热门城市:北京, 上海, 成都, 三亚, 广州, 重庆, 深圳, 西安, 杭州, 厦门, 武汉, 大连, 苏州。

    并将爬取的数据存到了MongoDB数据库 。

    爬虫部分完整代码如下

    import requests
    from bs4 import BeautifulSoup
    from pymongo import MongoClient
      
    class QuNaEr():
        def __init__(self, keyword, page=1):
            self.keyword = keyword
            self.page = page
      
        def qne_spider(self):
            url = 'https://piao.qunar.com/ticket/list.htm?keyword=%s&region=&from=mpl_search_suggest&page=%s' % 
            (self.keyword, self.page)
            response = requests.get(url)
            response.encoding = 'utf-8'
            text = response.text
            bs_obj = BeautifulSoup(text, 'html.parser')
      
            arr = bs_obj.find('div', {'class': 'result_list'}).contents
            for i in arr:
                info = i.attrs
                # 景区名称
                name = info.get('data-sight-name')
                # 地址
                address = info.get('data-address')
                # 近期售票数
                count = info.get('data-sale-count')
                # 经纬度
                point = info.get('data-point')
      
                # 起始价格
                price = i.find('span', {'class': 'sight_item_price'})
                price = price.find_all('em')
                price = price[0].text
      
                conn = MongoClient('localhost', port=27017)
                db = conn.QuNaEr # 库
                table = db.qunaer_51 # 表
      
                table.insert_one({
                    'name'      :   name,
                    'address'   :   address,
                    'count'     :   int(count),
                    'point'     :   point,
                    'price'     :   float(price),
                    'city'      :   self.keyword
                })
      
    if __name__ == '__main__':
        citys = ['北京', '上海', '成都', '三亚', '广州', '重庆', '深圳', '西安', '杭州', '厦门', '武汉', '大连', '苏州']
        for i in citys:
            for page in range(1, 5):
                qne = QuNaEr(i, page=page)
                qne.qne_spider()

    有了数据,我们就可以分析出自己想要的东西了

    最受欢迎的15个景区

    Python爬取13个旅游城市,告诉你大家最爱去哪玩?

    由图可以看出,在选择的13个城市中,最热门的景区为上海的迪士尼乐园

    导入数据库,代码如下

    from pymongo import MongoClient
    # 设置字体,不然无法显示中文
    from pylab import *
      
    mpl.rcParams['font.sans-serif'] = ['SimHei']
      
    conn = MongoClient('localhost', port=27017)
    db = conn.QuNaEr # 库
    table = db.qunaer_51 # 表
      
    result = table.find().sort([('count', -1)]).limit(15)
    # x,y轴数据
    x_arr = []  # 景区名称
    y_arr = []  # 销量
    for i in result:
        x_arr.append(i['name'])
        y_arr.append(i['count'])
      
    """
    去哪儿月销量排行榜
    """
    plt.bar(x_arr, y_arr, color='rgb')  # 指定color,不然所有的柱体都会是一个颜色
    plt.gcf().autofmt_xdate() # 旋转x轴,避免重叠
    plt.xlabel(u'景点名称')  # x轴描述信息
    plt.ylabel(u'月销量')  # y轴描述信息
    plt.title(u'拉钩景点月销量统计表')  # 指定图表描述信息
    plt.ylim(0, 4000)  # 指定Y轴的高度
    plt.savefig('去哪儿月销售量排行榜')  # 保存为图片
    plt.show()



    起源地下载网 » Python爬取13个旅游城市,告诉你大家最爱去哪玩?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元