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

简介: 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 文件中以供后续分析和处理。


相关文章
|
2月前
|
JSON 算法 API
1688商品详情API实战:Python调用全流程与数据解析技巧
本文介绍了1688电商平台的商品详情API接口,助力电商从业者高效获取商品信息。接口可返回商品基础属性、价格体系、库存状态、图片描述及商家详情等多维度数据,支持全球化语言设置。通过Python示例代码展示了如何调用该接口,帮助用户快速上手,适用于选品分析、市场研究等场景。
|
3月前
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
2月前
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
411 58
|
2月前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
63 15
|
2月前
|
人工智能 数据可视化 Python
在Python中对数据点进行标签化
本文介绍了如何在Python中使用Matplotlib和Seaborn对数据点进行标签化,提升数据可视化的信息量与可读性。通过散点图示例,展示了添加数据点标签的具体方法。标签化在标识数据点、分类数据可视化及趋势分析中具有重要作用。文章强调了根据需求选择合适工具,并保持图表清晰美观的重要性。
62 15
|
1月前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
2月前
|
供应链 API 开发者
1688 商品数据接口终极指南:Python 开发者如何高效获取标题 / 价格 / 销量数据(附调试工具推荐)
1688商品列表API是阿里巴巴开放平台提供的服务,允许开发者通过API获取1688平台的商品信息(标题、价格、销量等)。适用于电商选品、比价工具、供应链管理等场景。使用时需构造请求URL,携带参数(如q、start_price、end_price等),发送HTTP请求并解析返回的JSON/XML数据。示例代码展示了如何用Python调用该API获取商品列表。
130 18
|
2月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
80 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
3月前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
139 4
|
3月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
93 7

推荐镜像

更多