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.texthtml = 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').textstrategy_sum = li.find('div', class_='strategy_sum').textcomment_sum = li.find('div', class_='comment_sum').textcur_star = li.find('span', class_='cur_star')['style'].split(':')[1].replace('%', '')ranking_sum = li.find('span', class_='ranking_sum').textdesbox = 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)# 定义要爬取的城市和其对应的 URLurls = [{'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'] += 1get_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 文件中以供后续分析和处理。
如有遇到问题可以找小编沟通交流哦。另外小编帮忙辅导大课作业,学生毕设等。不限于python,java,大数据,模型训练等。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速理解JS中的原型和原型链

快速理解JS中的原型和原型链 在我们学习JS的过程中&#xff0c;我们总会接触到一些词&#xff1a;“原型”&#xff0c;“原型链”。那么今天我就来带大家来学习学习原型和原型链的知识吧&#xff01; 在开始之前&#xff0c;我们明确一下我们接下来想要学习的目标&#xff1a…

新型[datahelper@onionmail.org].datah 勒索病毒来袭:如何筑起安全防线?

在数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;其中勒索病毒成为了一种非常严重的威胁。[datahelperonionmail.org].datah勒索病毒就是其中的佼佼者&#xff0c;它以其复杂的加密手段和恶劣的勒索行为&#xff0c;给用户带来了巨大的损失。本文将从病毒的运行机制、…

ModuleNotFoundError: No module named ‘mlxtend‘

from mlxtend.plotting import plot_decision_regions 报错信息: ModuleNotFoundError: No module named mlxtend Jupyter和Spyder报错原因&#xff1a;因为anaconda下没有这个模块&#xff0c;需要安装mlxtend 解决方案&#xff1a; 1.打开anaconda(或终端) 2. 点击路径点…

Python爬虫之Scrapy框架基础

Scrapy爬虫框架介绍 文档 英文文档中文文档 什么是scrapy 基于twisted搭建的异步爬虫框架. scrapy爬虫框架根据组件化设计理念和丰富的中间件, 使其成为了一个兼具高性能和高扩展的框架 scrapy提供的主要功能 具有优先级功能的调度器去重功能失败后的重试机制并发限制ip使用次…

完全可定制的富文本编辑器:逻辑清晰,插件赋能 | 开源日报 No.218

ianstormtaylor/slate Stars: 28.8k License: MIT slate 是一个完全可定制的框架&#xff0c;用于构建富文本编辑器。 可以构建类似 Medium、Dropbox Paper 或 Google Docs 的富文本编辑器通过一系列插件实现所有逻辑&#xff0c;避免代码复杂度受到 Draft.js、Prosemirror 和…

1.grpc-教程(golang版)

目录 一、介绍 二、环境准备 三、Golang中使用grpc 1.编写protobuf文件 2.服务端 3.客户端 四、proto文件详解 1.proto语法 2.数据类型 基本数据类型 数组类型 map类型 嵌套类型 编写风格 3.多服务 4.多个proto文件 五、流式传输 1.普通rpc 2.服务器流式 …

基于SVM的时间序列预测模型matlab代码

整理了基于SVM的时间序列预测模型matlab代码&#xff0c; 包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型的进行评价。SVM模型在数据集上表现非常好。 Mean squared error 0.000180613 (regression) Squared correlation coefficient 0.995639 (regression) Mea…

【进阶六】Python实现SDVRPTW常见求解算法——自适应大邻域算法(ALNS)

基于python语言&#xff0c;采用经典自适应大邻域算法&#xff08;ALNS&#xff09;对 带硬时间窗的需求拆分车辆路径规划问题&#xff08;SDVRPTW&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整2.1 需求拆分2.2 需求拆分后的服务时长取值问题 3. 求解结果4…

信息收集-app,小程序,公众号,邮箱篇

*声明&#xff1a;*请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。合法渗透&#xff0c;本文章内容纯属虚构&#xff0c;如遇…

【linux】sudo 与 su/su -之间的区别

一、区别 二、其他 大概是因为使用 su 命令或直接以 root 用户身份登录有风险&#xff0c;所以&#xff0c;一些 Linux 发行版&#xff08;如 Ubuntu&#xff09;默认禁用 root 用户帐户。鼓励用户在需要 root 权限时使用 sudo 命令。 然而&#xff0c;您还是可以成功执行 su…

快速熟悉torchdiffeq用法,从数理逻辑到完整案例【第二、三部分】

本系列文章板块规划 提示&#xff1a;以下内容仅为个人学习感悟&#xff0c;无法保证完全的正确和权威&#xff0c;大家酌情食用谢谢。 第一部分 torchdiffeq背后的数理逻辑 第二部分 torchdiffeq的基本用法 第三部分 trochdiffeq的升级用法 第四部分 torchdifffeq的案例和代码…

Vue.js 过渡

过渡 Vue 在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的应用过渡效果。 Vue 提供了内置的过渡封装组件&#xff0c;该组件用于包裹要实现过渡效果的组件。 语法格式&#xff1a; <transition name "nameoftransition"><div></div&…

数据库(mysql)-连接嵌套查询-2

子查询 MySQL中的子查询&#xff08;Subquery&#xff09;是嵌套在其他SQL查询中的查询。子查询可以出现在SELECT、FROM或WHERE子句中&#xff0c;并用于返回将被用于外部查询的数据。子查询的结果可以是一个单一的值、一行、一列或多行多列的数据集。 单行单列查询 实例 #查…

2023 年网络安全热点技术发展态势

文章目录 前言一、人工智能信息技术迎来井喷式发展期二、零信任网络安全架构即将投入实际部署三、美国全面推动军政业务向云环境迁移四、专用太空软硬件与独立卫星网络并行发展五、量子信息技术与网络安全领域加速融合前言 在 2023 年取得进展的信息技术不在少数。从网络安全的…

基于51单片机低中高音7键电子琴音乐播放器

基于51单片机电子琴音乐播放器 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.可以使用按键切换音乐播放模式和弹奏模式&#xff1b; 2.LED灯显示在使用哪种模式&#xff1b; 3.音乐…

《黑马点评》Redis高并发项目实战笔记(上)P1~P31

P1 Redis企业实战课程介绍 P2 短信登录 导入黑马点评项目 首先在数据库连接下新建一个数据库hmdp&#xff0c;然后右键hmdp下的表&#xff0c;选择运行SQL文件&#xff0c;然后指定运行文件hmdp.sql即可&#xff08;建议MySQL的版本在5.7及以上&#xff09;&#xff1a; 下面这…

【Vue + keep-alive】路由缓存

一. 需求 列表页&#xff0c;n 条数据项可打开 n 个标签页&#xff0c;同时1条数据项的查看和编辑共用一个标签页。如下所示&#xff1a; 参考 // 主页面 // 解决因 路由缓存&#xff0c;导致 编辑后跳转到该页面 不能实时更新数据 onActivated(() > {getList() })二. 实现…

5.2 配置静态路由

5.2.1 实验1&#xff1a;配置IPv4静态路由 1、实验目的 通过本实验可以掌握&#xff1a; 配置带下一跳地址的IPv4静态路由的方法。配置带送出接口的IPv4静态路由的方法。配置总结IPv4静态路由的方法。配置浮动IPv4静态路由的方法。代理 ARP的作用。路由表的含义。扩展ping命…

python|sort_values()排序

sort_value()可以用来对值&#xff08;比如说年龄&#xff09;进行排序 根据 ‘Age’ 列进行升序排序&#xff0c;如果 ‘Age’ 相同则根据 ‘Name’ 列进行降序排序 df_sorted_multi df.sort_values(by[Age, Name], ascending[True, False]) print(df_sorted_multi)

一款可自动跳广告的安卓App开源项目

开放权限有风险&#xff0c;使用App需谨慎&#xff01; gkd 基于 无障碍 高级选择器 订阅规则 的自定义屏幕点击 APP 功能 基于 高级选择器 订阅规则 快照审查, 它可以实现 点击跳过任意开屏广告/点击关闭应用内部任意弹窗广告, 如关闭百度贴吧帖子广告卡片/知乎回答底…