Python爬虫实战案例——第六例

文章中所有内容仅供学习交流使用,不用于其他任何目的!严禁将文中内容用于任何商业与非法用途,由此产生的一切后果与作者无关。若有侵权,请联系删除。

目标:去哪儿网指定城市人气值最高的15个景点评论数据采集

地址:aHR0cHM6Ly9waWFvLnF1bmFyLmNvbS90aWNrZXQvbGlzdC5odG0/a2V5d29yZD0lRTUlOEMlOTclRTQlQkElQUMmcGFnZT0xJnNvcnQ9cHA=

在这里插入图片描述

进入主页之后可以看到每一个景点是根据推荐来进行排序的,所以我们如果要获取人气值最高的景点的话需要获取人气排序时的url,点击根据人气排序即可。

在这里插入图片描述

其在url中的体现主要是查询参数sort的值的改变。

在这里插入图片描述

通过抓包预览不难发现在当前页面中各景点的详情页url是位于静态html中的,所以我们考虑使用xpath来解析详情页的url。

在这里插入图片描述

这部分代码如下

def index_request(url):"""请求主页获取每一个景点的详情页面url"""response = requests.get(url, params=params, headers=headers)text_html = response.content.decode()tree = etree.HTML(text_html)div_list = tree.xpath('//*[@id="search-list"]/div')     # 各个景点所在的所有div标签,需要提取出各个景点的详情页面的urlfor div in div_list:detail_url = 'https://piao.qunar.com' + div.xpath('./div[1]/div[2]/h3/a/@href')[0]detail_request(detail_url)

注意:该站点对Cookie有最基础的检测,所以代码中需要携带上Cookie进行请求。

在获取到详情页的url之后,就需要对详情页进行分析,寻找一下用户评论是如何获取的。首先来观察静态页面,在其中我们是无法看到用户评论的,所以初步断定用户评论是异步加载的数据。

在这里插入图片描述

切到xhr中分析,包并不多,可以直接搜索关键字快速定位也可以一个个查看。

在这里插入图片描述

定位到之后分析一下这个包的请求接口在请求的时候可能传递的参数。

在这里插入图片描述

可以看到的是一共传递了5个参数,其中page表示的是页数,这个毫无疑问;pageSize表示每页多少条数据,这个参数是不用修改的。其他参数就需要我们去访问不同页面进行分析了,接下来我们翻到第二页看一下两次访问有什么不同。

在这里插入图片描述

可以看到两页不同的请求变化的参数为index和page,再多访问几页也是一样的结果,所以断定index随page变化而同步变化。最后剩下sightId这个参数,这个参数如果有经验的话其实可以断定其是某个景点在这个站点中的唯一ID。就算不知道的话我们也可以来直接搜索一下这个值,因为该值在多次访问的时候是没有发生变化的,所以直接全局搜索即可。

在这里插入图片描述

这样来看就非常明显了,这个值就是从静态页面中可以直接提取的,那么我们就需要先访问详情页面将sightId值解析出来作为评论接口的参数。最后请求评论接口以获取评论信息并保存即可。

完整代码请移步:https://gitee.com/shuailiuquan/spider-code/tree/master/

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ThreeJS-3D教学二:基础形状展示

three中提供了22 个基础模型,此案例除了 EdgesGeometry、ExtrudeGeometry、TextGeometry、WireframeGeometry,涵盖 17 个形状。 Fog 雾化设置,这是scene场景效果EdgesGeometry , WireframeGeometry 更多地可能作为辅助功能去查看几何体的边和…

学校安全用电管理系统解决方案

随着科技的发展和进步,电力已成为我们日常生活和学习的重要支柱。然而,电力的使用也带来了一定的安全风险。特别是对于学校这个复杂而又活跃的环境,安全用电管理系统的角色显得尤为重要。 一、学校用电管理系统的现状 目前&#xff0…

26593-2011 无损检测仪器 工业用X射线CT装置性能测试方法

声明 本文是学习GB-T 26593-2011 无损检测仪器 工业用X射线CT装置性能测试方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了工业用X 射线CT 装置(以下简称CT 装置)性能测试的术语、定义、缩略语以及空间 分辨力、密度分辨率…

linux 防火墙iptables

iptables 是 Linux 中比较底层的网络服务,它控制了 Linux 系统中的网络操作,CentOS 中的 firewalld 和 Ubuntu 中的 ufw 都是在 iptables 之上构建的,只为了简化 iptables 的操作。同时,iptables 不仅仅是防火墙这么简单&#xff…

Mysql8安装+重装的数据备份方法【提供Mysql8.0.27版本的压缩包】

文章目录 Mysql8压缩安装包下载安装流程压缩包解压配置环境变量 初始化数据库连接数据库修改密码Mysql重装/重装系统 的数据库备份方法数据备份数据还原 Mysql8压缩安装包下载 压缩包下载路径 安装流程 压缩包解压 首先将压缩包解压,下图是解压之后的文件目录&a…

Swift SwiftUI 修改 List 背景颜色

Preview: Code: .listRowBackground(Color(.yellow)).scrollContentBackground(.hidden) .background(.linearGradient(colors: [.white, .accentColor], startPoint: .top, endPoint: .bottom))喜欢或对你有帮助,点个赞吧,自己先点个嘿嘿。 有错误或者…

eNSP网络学习-v05

IP容量 ip地址一共是32位,/24就表示他的网络号是24位。 也就是说共有 2^(32-24)-2 个主机(因为主机为全0和1的保留不用,所以需要减2),共254个ip。 /24:2的8次方-2 :254 …

Oracle 11g_FusionOS_安装文档

同事让安装数据库,查询服务器信息发现操作系统是超聚变根据华为openEuler操作系统更改的自研操作系统,安装过程中踩坑不少,最后在超聚变厂商的技术支持下安装成功,步骤可参数该文。 一、 安装环境准备 1.1 软件下载 下载地址:…

使用cpolar端口映射的方法轻松实现在Linux环境下SVN服务器的搭建与公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

从零开始之了解电机及其控制(11)实现空间矢量调制

广泛地说,空间矢量调制只是将电压矢量以及磁场矢量在空间中调制到任意角度,通常同时最大限度地利用整个电压范围。 其他空间矢量调制模式确实存在,并且根据您最关心的内容,它们可能值得研究。 如何实际执行这种所谓的交替反向序列…

【小余送书第一期】《数据要素安全流通》参与活动,即有机会中奖哦!!

目录 1、背景介绍 2、本书编撰背景 3、本书亮点 4、本书主要内容 5、活动须知 1、背景介绍 随着大数据、云计算、人工智能等新兴技术的迅猛发展,数据已经成为我国经济社会发展的五大生产要素之一,《网络安全法》《个人信息保护法》《数据安全法》的…

如何将图片转为ico格式

这里主要是记录一个网站,如果你有更好的办法欢迎留言~ ico简介 ICO(Icon)是一种用于表示图标的文件格式,常用于Windows操作系统中。ICO格式的图片通常用于表示应用程序、文件夹、网站等的图标。 ICO文件可以包含多个图标&#x…

LINUX|ubuntu常用指令

文章目录 查看IP显示当前路径下所有文件安装编译工具GCC、调试工具GDB、连接工具SSHmkdir 创建目录export命令显示当前系统定义的所有环境变量echo $PATH命令输出当前的PATH环境变量的值当前命令行添加环境变量,关闭失效,防止多版本库冲突时使用sudo su打…

Python函数:chr()和ord()

两个函数是基于Unicode编码表进行进行字符与字码之间的转换。 chr()函数是通过字码转换成字符: 如图,坐标(1,4e10)丑 使用chr需要线将坐标相加得到:4e11 chr默认传入10进制的字码. 如图是各进制的字码。 也可以传入其他进制,不过需要在前面传入的参数最前…

Xcode 15 运行<iOS 14, 启动崩溃问题

如题. Xcode 15 启动 < iOS 14(没具体验证过, 我的问题设备是iOS 13.7)真机设备 出现启动崩溃 解决方案: Build Settings -> Other Linker Flags -> Add -> -ld64

Docker容器部署初学01

Docker容器就是个虚拟机&#xff0c;轻便微小&#xff0c;方便&#xff0c;代替了VM虚拟机的位置 当然&#xff0c;我会尽力以简单的方式为您解释如何从GitHub下载一个项目并使用Docker进行部署&#xff01;&#x1f60a; 步骤1: 下载项目 1. 打开您的浏览器并前往GitHub网站…

Stable Diffusion WebUI插件posex安装以及无法使用完美解决办法汇总

posex是一个很好用的3Dopenpose编辑器。 我们只需要去官网找到源码就可以查看其用法。 对于安装大家应该都知道怎么去安装。 1. 如何安装 (1)一体包安装方式 类似于秋叶一体包直接在webui界面搜索posex就可以直接install。 最新版本好像已经取消了。 (2)手动安装方式…

LeetCode 322.零钱兑换 完全背包 + 动态规划

322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff…

扫地机器人经营商城小程序的作用是什么

扫地机器人对人们生活大有帮助&#xff0c;近些年也有不少企业开创品牌&#xff0c;在电商平台每年销量也非常高&#xff0c;同行竞争激烈及私域化程度加深情况下&#xff0c;虽然第三方平台或线下方式也有生意&#xff0c;但互联网电商发展也为商家们带来了诸多痛点。 那么通…

Java列表查询Long(id)到前端转换出错

Java列表查询Long到前端转换出错 问题描述排查思路思路一&#xff1a;SQL问题思路二&#xff1a;Long类型转换出错 解决方法 问题描述 做了一个列表查询功能&#xff0c;本来不应该有啥大问题的&#xff0c;但是往往事与愿违。 诶&#xff0c;你越觉得不可能出问题&#xff0c…