python爬取上海旅游景点(详细)

2024-02-19 03:10

本文主要是介绍python爬取上海旅游景点(详细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天爬取的是去哪儿网上的上海旅游景点,我们要爬取的是景点的经纬度、景点名称、点评数、星级、攻略提到的次数

爬取出来的数据如下(我只截取了前10条数据):

爬取的网址是:https://travel.qunar.com/p-cs299878-shanghai-jingdian

首先是导入工具库

用途:用requests对网址发出请求后,用BeautifulSoup解析网址

    

这里拓展一下:200 说明服务器已成功处理请求

                         302  说明服务器目前从不同位置的网页响应请求,类似跳转页面

                         404  说明服务器找不到请求的页面

通过requests对网址发出请求后,咱们可以使用r.text获取网页的html文档,密密麻麻一大堆~

接着咱们试一试使用BeautifulSoup解析网址,看看会产生什么结果

嗯~看起来好多了~在html中,h1表示最大的标题,h6表示最小的标题

咱们试试获取h1这个标题信息 ,可以看到我们获取到的是网页的标题

现在差不多知道requests和BeautifulSoup的用法啦,那么就开始爬取上海的旅游景点信息吧

登录网址后咱们可以发现这是列表页面,每个页面的网址都基本相同,唯一不同的就是所在的页面,如下,第二页和第三页不同的地方只有最后面2、3所在的位置

根据上面的信息,获取前3页的网址看看~这里我创建了一个空列表urllst,用来准备装生成的网址,用的是.append将生成的网址添加到列表

我们试试采集第一页的信息,可以看到下面截图中圈出来部分可以完全包含我们所要爬取的信息,所以可以从class为list_item clrfix的ul标签中获取信息,每一个li标签对应着每一个景点的信息

   

find_all()表示查找所有的标签

因为每个li对应的是每个景点的信息,我们来看看第一个景点的信息

如果我要获取的是这个景点的位置、名称、点评数、星级、攻略提到的次数,应该怎么办?

图中标注出来的标签就是对应的景点位置、攻略提到的次数、名称、点评数、星级

因为经纬度直接在li里的,是属性值,直接索引就可以了

景点名称属于元素,存储在class为cn_tit的span标签中,需要用find()函数找到标签,找到标签后,在其后面加.text就可以获取到景点的名称啦;攻略提到的次数是div标签中的,它的span标签其实是空的,只是嵌套在了div标签下;点评数是在class为comment_sum的span标签下;星级是在class为cur_star的span标签下的style中,找到星级标签后采用的是split对width:96%进行分割

下面代码使用了字典dic存储获取到的数据

我们获取到的是第一个景点的信息:

这个上海旅游景点的网站中每个网页有10个景点,那么如果我想要获取200个网页的信息呢

具体代码如下:

最后一共爬取了2000条数据

爬好的数据,将其转化成数据框的形式再保存为CSV的格式,然后就完成了~~~得到的结果就是开头我发的那张数据截图

我很黑,但我是小白是真的,所以我是往详细了写~这样后面遇到不懂的还能回头看看

完整代码奉上~~~

import requests
from bs4 import BeautifulSoupdata=[] #空列表,采集 到的数据都添加进去n=0urllst=[] 
for i in range(1,201):url='https://travel.qunar.com/p-cs299878-shanghai-jingdian-1-%s'%iurllst.append(url) #将生成的网址添加到列表中for u in urllst:r=requests.get(u)soup=BeautifulSoup(r.text,'lxml')ul=soup.find('ul',class_='list_item clrfix')li=ul.find_all('li')for l in li:n+=1dic={}dic['lat']=l['data-lat']dic['lng']=l['data-lng']dic['景点名称']=l.find('span',class_='cn_tit').text #获取元素:找到标签后,后面加.textdic['攻略提到的数量']=l.find('div',class_='strategy_sum').textdic['点评数']=l.find('div',class_='comment_sum').textdic['星级']=l.find('span',class_='cur_star')['style'].split(':')[-1]data.append(dic)print('成功采集%s条数据'%n)dataimport pandas as pd
df=pd.DataFrame(data)
df.to_csv('C:/Users/Administrator/Desktop/dd.csv')

 

这篇关于python爬取上海旅游景点(详细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/723326

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过