Python网络实践:去哪儿旅游数据爬取指南

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: Python网络实践:去哪儿旅游数据爬取指南

Python网络实践:去哪儿旅游数据爬取指南

在这个博客中,我们将探索如何使用 Python 来进行网络数据抓取,并以抓取旅游数据为例进行演示。我们将通过一个简单的示例来说明如何利用 Python 中的常用库进行网页抓取,从而获取旅游网站上的信息。

背景

在今天的数字化时代,网络是一个充满了各种信息和资源的巨大宝库。然而,要从网络上获取所需的信息,可能需要花费大量的时间和精力。幸运的是,有一种被称为网页抓取的技术可以帮助我们自动化这个过程。

代码解析

1. 导入必要的库

import os
from hashlib import md5
import pandas as pd
import requests
from bs4 import BeautifulSoup

os:用于操作文件路径等系统功能的标准 Python 库。

hashlib:用于生成哈希值的标准 Python 库,这里用于生成景点名称的哈希值作为数据的唯一标识。

pandas:用于数据处理和分析的流行 Python 库。

requests:用于发送 HTTP 请求和接收响应的 Python 库。

BeautifulSoup:用于解析 HTML 和 XML 文档的 Python 库。

2. 定义 get_page 函数

def get_page(url, city):
    response = requests.get(url=url)
    page_text = response.text
    html = BeautifulSoup(page_text, 'lxml')
    li_list = html.find('div', class_='listbox').find('ul').find_all('li')
    
    for li in li_list:
        # 解析网页中的景点信息并存储到字典中
        name = li.find('a', class_='titlink').text
        strategy_sum = li.find('div', class_='strategy_sum').text
        comment_sum = li.find('div', class_='comment_sum').text
        cur_star = li.find('span', class_='cur_star')['style'].split(':')[1].replace('%', '')
        ranking_sum = li.find('span', class_='ranking_sum').text
        desbox = li.find('div', class_='desbox')
        link = li.find('a', class_='imglink')['href']
        img = li.find('a', class_='imglink').find('img')['src']
        
        # 将景点信息存储到字典中
        citydata = {
            'key': md5(name.encode('utf-8')).hexdigest(),
            '城市': city,
            '景点名称': name,
            '攻略数量': strategy_sum,
            '评论数量': comment_sum,
            '星级': cur_star,
            '排名': ranking_sum,
            '简介': desbox.text,
            '链接': link,
            '图片': img
        }
        # 将字典转换为 DataFrame,并将数据追加到 CSV 文件中
        df = pd.DataFrame(citydata, index=[0])
        df.to_csv('data.csv', encoding='utf-8-sig', index=False, header=False, mode='a+')
        print(citydata)

get_page 函数用于从指定 URL 获取网页数据,并解析其中的景点信息。然后将解析后的信息存储到字典 citydata 中,并将字典转换为 DataFrame,最后将数据追加到 CSV 文件中。

3. 主函数

if __name__ == '__main__':
    filename = 'data.csv'
    df = pd.DataFrame(columns=['key','城市', '景点名称', '攻略数量', '评论数量', '星级', '排名', '简介', '链接', '图片'])
    
    # 如果文件不存在,则创建一个新的 CSV 文件
    if not os.path.exists(filename):
        df.to_csv(filename, encoding='utf-8-sig', index=False)
        
    # 定义要爬取的城市和其对应的 URL
    urls = [
        {'city': '厦门','url': 'https://travel.qunar.com/p-cs299782-xiamen-jingdian-1-{page}','page': 0, 'max_page': 80},
        # 其他城市的 URL 数据...
    ]
    
    # 循环遍历城市列表并爬取数据
    for url in urls:
        while url['page'] <= url['max_page']:
            url['page'] += 1
            get_page(url['url'].format(page=url['page']), url['city'])
            print('\r[{city}] 第{page}页/共{max_page}页'.format(city=url['city'],page=url['page'],max_page=url['max_page']),end=' ')
            time.sleep(5)

主函数部分负责执行代码的主要逻辑,包括创建 CSV 文件、定义要爬取的城市和对应的 URL,以及循环遍历城市列表并调用 get_page 函数来爬取数据。


通过以上步骤,我们实现了一个简单的网页抓取程序,用于抓取旅游网站上的景点信息,并将数据存储到 CSV 文件中以供后续分析和处理。


相关文章
|
19天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
212 55
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
29天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
155 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
6天前
|
运维 供应链 安全
阿里云先知安全沙龙(武汉站) - 网络空间安全中的红蓝对抗实践
网络空间安全中的红蓝对抗场景通过模拟真实的攻防演练,帮助国家关键基础设施单位提升安全水平。具体案例包括快递单位、航空公司、一线城市及智能汽车品牌等,在演练中发现潜在攻击路径,有效识别和防范风险,确保系统稳定运行。演练涵盖情报收集、无差别攻击、针对性打击、稳固据点、横向渗透和控制目标等关键步骤,全面提升防护能力。
|
28天前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
150 30
|
8天前
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
日志审计的必要性在于其能够帮助企业和组织落实法律要求,打破信息孤岛和应对安全威胁。选择 SLS 下日志审计应用,一方面是选择国家网络安全专用认证的日志分析产品,另一方面可以快速帮助大型公司统一管理多组地域、多个账号的日志数据。除了在日志服务中存储、查看和分析日志外,还可通过报表分析和告警配置,主动发现潜在的安全威胁,增强云上资产安全。
|
8天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
21天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
69 15
|
29天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
38 7
|
28天前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。