# 获取搜索内容的页数

需要的包

import urllib.request  # 获取网页源码
import re # 正则表达式,进行文字匹配
from bs4 import BeautifulSoup # 解析网页

解析网页

第一步,解析网页为网页源码(【Python】【爬虫系列】【爬狼】002_自定义获取网页源码的函数 - 萌狼蓝天 - 博客园 (cnblogs.com/mllt)

    # 获取网页源码
response_html = xrilang_UrlToDocument(Url)
# xrilang_UrlToDocument是我自定义函数,如果你没写这个函数,直接使用,会报错的。
# 如果你想了解这个函数的具体内容,请看【爬狼系列】笔记第002篇

获取搜索内容的页数

分析网页

切换页数,观察地址栏变化。

根据观察第二页、第三页链接如下

# 第二页
https://www.yhdmp.cc/s_all?kw=love&pagesize=24&pageindex=1
# 第三页
https://www.yhdmp.cc/s_all?kw=love&pagesize=24&pageindex=2

由此可以推测出,第一页的地址为

https://www.yhdmp.cc/s_all?kw=love&pagesize=24&pageindex=0

s_all:Search All 搜索全部

kw:Key Word

pagesize:页面大小(一页有多少个视频)

pageindex:页面索引(索引从0开始,代表页数。索引0是第一页,索引1是第二页,以此类推)

获取视频数量

此处会显示视频数量,我们只需取出这个“数字”就可以了。

方法1

	# 1.获取所搜结果视频数量
reStr1 = r'''搜索结果, 共(.*?)个''' # 正则规则
# temp = re.findall(reStr1, response_html) # 在 response_html 中查找符合上述正则规则(reStr1)的内容
# 运行结果为:['49']
mvNumber = re.findall(reStr1, response_html)[0] # 取出列表的第一项(索引为0) 设置变量mvNumber(搜索得到的视频数量)
# 运行结果为:49

方法2(推荐使用)

# 1.获取所搜结果视频数量
reStr1 = re.compile(r'''搜索结果, 共(.*?)个''') # 正则规则
# temp = re.findall(reStr1, response_html) # 在 response_html 中查找符合上述正则规则(reStr1)的内容
# 运行结果为:['49']
mvNumber = re.findall(reStr1, response_html)[0] # 取出列表的第一项(索引为0) 设置变量mvNumber(搜索得到的视频数量)
# 运行结果为:49

通过视频数量获取页数

通过分析,我们知道,一页有24个视频,视频总数在上面已经求出来了,那么会有多少页呢,这就是一个小学的题了。

视频总数/每页展示视频数=总页数

即:视频总数/24=总页数

注意,如果有余数,则直接+1,结果为整数

 	# 通过视频数量判断有多少页
# pageNumber = int(mvNumber) / 24
# 运行结果为:2.0416666666666665
# 求出页数
if (int(mvNumber) % 24) == 0:
pageNumber = int(mvNumber) / 24
else:
pageNumber = int(int(mvNumber) / 24) + 1
# 最终得到页数结果 pageNumber # mvNumber是视频总数

将此功能编写为函数

为了方便求页数,我们需要将次功能编写为函数方便我们使用

def xrilag_SearchAll(keyword):
"""
'获取搜索内容的总页数'
:param keyword:搜索的关键字
:return:int 搜索结果的总页数
"""
# 基础链接
baseUrl = "https://www.yhdmp.cc/s_all?ex=1&kw="
Url = baseUrl + keyword
# 获取网页源码
response_html = xrilang_UrlToDocument(Url)
# 1.获取所搜结果视频数量
reStr1 = re.compile(r'''搜索结果, 共(.*?)个''') # 正则规则
# temp = re.findall(reStr1, response_html) # 在 response_html 中查找符合上述正则规则(reStr1)的内容
# 运行结果为:['49']
mvNumber = re.findall(reStr1, response_html)[0] # 取出列表的第一项(索引为0) 设置变量mvNumber(搜索得到的视频数量)
# 运行结果为:49 # 通过视频数量判断有多少页
# pageNumber = int(mvNumber) / 24
# 运行结果为:2.0416666666666665
# 求出页数
if (int(mvNumber) % 24) == 0:
pageNumber = int(mvNumber) / 24
else:
pageNumber = int(int(mvNumber) / 24) + 1
# 最终得到页数结果 pageNumber
return pageNumber

学习本文,最重要的是学习思维和处理方式

【Python】【爬虫】【爬狼】003_获取搜索结果的页数的更多相关文章

  1. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  2. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  3. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  4. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  5. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  6. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  7. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

  8. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

  9. 使用python爬虫爬取链家潍坊市二手房项目

    使用python爬虫爬取链家潍坊市二手房项目 需求分析 需要将潍坊市各县市区页面所展示的二手房信息按要求爬取下来,同时保存到本地. 流程设计 明确目标网站URL( https://wf.lianjia ...

  10. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

随机推荐

  1. module_softdep

    所谓的MODULE_SOFTDEP,就是两个两个模块之间本有依赖,但是一定要要加载顺序的要求. 用法很简单. #define MODULE_SOFTDEP(_softdep) MODULE_INFO( ...

  2. Android内存分析命令

    一.内存指标 Item 全称 含义 等价 USS Unique Set Size 物理内存 进程独占的内存 PSS Proportional Set Size 物理内存 PSS= USS+ 按比例包含 ...

  3. Android Perfetto 系列 1:Perfetto 工具简介

    2019 年开始写 Systrace 系列,陆陆续续写了 20 多篇,从基本使用到各个模块在 Systrace 上的呈现,再到启动速度.流畅性等实战,基本上可以满足初级系统开发者和 App 开发者对于 ...

  4. wpf样式模板的使用

    <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...

  5. kotlin更多语言结构——>类型检测与类型转换 is 与 as

    is 与 !is 操作符 我们可以在运行时通过使用 is 操作符或其否定形式 !is 来检测对象是否符合给定类型: if (obj is String) { print(obj.length) } i ...

  6. 如何使用 VuePress 搭建博客网站并 Vercel 部署

    先来看一下网站截图: 快速上手 1.创建并进入一个新目录 mkdir vuepress-starter && cd vuepress-starter 2.使用你喜欢的包管理器进行初始化 ...

  7. Awesome Tools,程序员常用高效实用工具、软件资源精选,办公效率提升利器!

    前言 在当今这个技术日新月异的时代,开发者只有持续学习,才能紧跟时代的浪潮.为了助力开发者在高效学习与工作中实现平衡(告别996的束缚),众多卓越且实用的开发工具应运而生,它们如同强大的助力器,极大地 ...

  8. ToDesk再度出手,加快云电脑高性能发展,剑指千亿级市场

    根据中国信通院发布的<云计算白皮书(2023年)>(以下简称白皮书)显示,云计算引发了软件开发部署模式的创新,成为承载各类应用的关键基础设施,为大数据.物联网.人工智能等新兴领域的发展提供 ...

  9. Redis高可用-集群部署

    redis配置 Redis集群需要至少3个主节点,为保证数据的完整性每个主节点至少需要一个从节点,所以至少需要准备6个Redis服务 建议将redis注册为系统服务并设置自启动,服务注册命令为: re ...

  10. mysql 查询两个日期之间所有天数(查询近两个月所有日期)

    本文转自博文:https://blog.csdn.net/qq_42795259/article/details/126722209 遇到一个需求需要查询近两个月所有日期,如下图: 首先实现解决问题如 ...