requests_html使用介绍

news2024/11/17 23:37:11

文章目录

  • 一、requests_html 基本介绍
  • 二、requests_html 基本使用
  • 三、发送带有参数的请求
  • 四、图片抓取实战案例


一、requests_html 基本介绍

A、装库: pip install requests_html
B、介绍: requests 和 requests_html 是同一个作者

二、requests_html 基本使用

A、导包: from requests_html import HTMLSession
B、使用: session = HTMLSession()

三、发送带有参数的请求

params = {
}
requests.get(url, params=params)

四、图片抓取实战案例

案例实战:使用requests_html库抓取图片
部分效果如图所示:
在这里插入图片描述

附上部分代码如下:

import os
from requests_html import HTMLSession


class BdtpSpider(object):
    def __init__(self):
        '''
            1、初始化部分
        '''
        self.keyword = '风景'
        self.session = HTMLSession()
        self.start_url = ''
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
        }

    def confrim_params(self):
        '''
            2、确认请求参数
        '''
        for index in range(1, 2):
            print('\n' + '-------------正在下载: 第{}页-------------'.format(index) + '\n')
            params = {
            
        }
            self.requests_start_url(params)

    def requests_start_url(self, params):
        '''
            3、请求起始地址
        '''
        response = self.session.get(self.start_url, params=params, headers=self.headers).json()
        self.parse_resposne(response)

    def parse_resposne(self, response):
        '''
            4、解析图片名字, 图片地址
        '''
        for data_info in response['data'][0: -1]:
            img_name = data_info['fromPageTitleEnc']
            img_name = img_name.replace('?', '').replace(' ', '').replace(',', '').replace(':', '')
            img_url = data_info['middleURL']
            self.requests_img_url(img_name, img_url)

    def requests_img_url(self, img_name, img_url):
        '''
            5、请求获取图片二进制
        '''
        img_content = self.session.get(img_url).content
        self.create_dir(img_name, img_content)

    def create_dir(self, img_name, img_content):
        '''
            6、创建文件夹
        '''
        if not os.path.exists('{}'.format(self.keyword)):
            os.mkdir('{}'.format(self.keyword))
        self.save_data(img_name, img_content)

    def save_data(self, img_name, img_content):
        '''
            7、保存数据
        '''
        try:
            with open('{}/{}.jpg'.format(self.keyword, img_name), 'wb') as f:
                f.write(img_content)
            print('下载完成: {}.jpg'.format(img_name))
        except Exception as e:
            print('下载失败: {}.jpg'.format(img_name))

    def main(self):
        '''
            逻辑控制部分
        '''
        self.confrim_params()


if __name__ == '__main__':
    bdtp = BdtpSpider()
    bdtp.main()

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

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

相关文章

辐射度技术在AI去衣中的魅力与科学

引言: 在当今的数字化时代,人工智能正逐渐渗透到我们生活的方方面面。其中,AI去衣技术作为一项颇具争议但又不失其科技创新的应用,正引起越来越多的关注和讨论。而在实现高质量图像渲染的过程中,辐射度技术凭借其卓越的…

Linux指令初识

ls:显示当前目录底下的指定文件或目录 ls -l更详细的信息 ls -a显示当前目录下的所有文件 命令中的选项可以一次传递多个 ,例如:ls -al 命令和选项有必须一个或多个空格 以.开头的文件,为隐藏文件ls -a可以看到,ls -l看不见 支持命令拼在一起&#…

Rust开源Web框架Salvo源码编译

1.克隆源码: https://github.com/salvo-rs/salvo.git 2.进入salve目录并运行cargo build编译 编译成功 3.编译生成的库 4.安装salve-cli git clone --recursive https://github.com/salvo-rs/salvo-cli.git 编译salve-cli

stm32-PWM输出比较配置

配置流程 1.RCC开启时钟 2.时钟源选择和配置时基单元 这一部分上一篇有写,可以参考一下上一篇的内容,此处不多赘述了。 原文链接:https://blog.csdn.net/m0_74246768/article/details/139048136 3.配置输出比较单…

链表类型的无界阻塞线程安全队列-ConcurrentLinkedQueue(FIFO)

ConcurrentLinkedQueue是非阻塞线程安全(volatile不能完全保证线程安全)的队列,适用于“高并发”的场景。是一个基于链表节点的无界线程安全队列,按照 FIFO(先进先出,尾先进头先出)原则对元素进行排序。队列元素中不可以放置null元素(内部实现的特殊节点除外)。 volati…

【WEEK13】 【DAY5】Shiro第五部分【中文版】

2024.5.24 Friday 接上文【WEEK13】 【DAY4】Shiro第四部分【中文版】 目录 15.7.Shiro请求授权的实现15.7.1.修改ShiroConfig.java15.7.1.1.添加一行验证授权的代码15.7.1.2.重启 15.7.2.修改MyController.java15.7.3.修改ShiroConfig.java15.7.4.重启15.7.5.修改UserRealm.ja…

风电机组的振动控制

文章目录 0. 背景1. 原文记录 0. 背景 混塔机组的频率大概是目前业内遇见的比较普遍的通病。最近在了解风电机组振动控制的知识,看到一篇科普性质的文章,感觉不错,所以记录下来。想要看原文的点击这里。感谢原作者。 1. 原文记录

在IDEA中配置servlet(maven配置完成的基础下)

在IDEA中配置servlet&#xff08;maven配置完成的基础下&#xff09; 1.先新建一个项目 2.选择尾巴是webapp的&#xff0c;名称自定义 3.点击高级设置&#xff0c;修改组id 点击创建&#xff0c;等待jar包下载完成。在pom.xml中配置以下 <dependency><groupId>ja…

【C++算法】BFS解决拓扑排序问题相关经典算法题

1.铺垫概念 ⭐有向无环图&#xff08;DAG图&#xff09; 有向无环图是一种特殊的图数据结构。在这样的图中&#xff0c;节点之间通过有向边连接&#xff0c;表示从一个节点到另一个节点的单向关系&#xff0c;并且不存在任何形式的环路&#xff0c;即没有路径可以让你从一个节…

CLIP 论文的关键内容

CLIP 论文整体架构 该论文总共有 48 页&#xff0c;除去最后的补充材料十页去掉&#xff0c;正文也还有三十多页&#xff0c;其中大部分篇幅都留给了实验和响应的一些分析。 从头开始的话&#xff0c;第一页就是摘要&#xff0c;接下来一页多是引言&#xff0c;接下来的两页就…

PMBOK® 第六版 项目经理的角色

项目经理普遍是一个责任大但权力有限的角色&#xff0c;是一个综合的中层领导者&#xff0c;负责项目从启动到收尾的全过程。他需要整合项目管理的各个方面&#xff0c;以确保项目目标的实现&#xff0c;并满足相关方的期望和需求。在工作中&#xff0c;项目经理大部分时间都用…

【全开源】海报在线制作系统源码(ThinkPHP+FastAdmin+UniApp)

打造个性化创意海报的利器 引言 在数字化时代&#xff0c;海报作为一种重要的宣传媒介&#xff0c;其设计质量和效率直接影响着宣传效果。为了满足广大用户对于个性化、高效制作海报的需求&#xff0c;海报在线制作系统源码应运而生。本文将详细介绍海报在线制作系统源码的特…

MVCC 原理分析、MySQL是如何解决幻读的

文章目录 一、前言回顾1.1 事务四大特性ACID1.2 并发事务问题1.3 事务隔离级别 二、MVCC2.1 为什么使用MVCC2.2 基本概念——当前读、快照读、MVCC2.2.1 当前读2.2.2 快照读2.2.3 MVCC 2.3 隐藏字段—— TRX_ID、ROLL_PTR2.4 undo log2.4.1 介绍2.4.2 版本链 2.5 Read View读视…

tensorflow2.0 -- 介绍及环境配置

文章目录 机器学习的框架tensorflow 2.0环境配置 机器学习的框架 scikit-learn, 传统的机器学习框架&#xff0c;不支持深度学习和GPU加速计算&#xff1b; caffe, 深度学习框架&#xff0c;发展到pytorch keras, 深度学习的包裹器 tensorflow&#xff0c;google开源的深度学习…

【Linux部署】【pig前端部署】Linux安装- docker/docker-compose/nginx (使用docker优雅部署nginx)

&#x1f338;&#x1f338; Linux安装- docker/docker-compose/nginx 优雅部署 &#x1f338;&#x1f338; 一、一键安装jdk yum install -y java-1.8.0-openjdk.x86_64验证 二、安装docker yum list docker-ce --showduplicates | sort -rsudo yum install -y yum-utils …

RocketMq局部顺序消息

package com.ldj.rocketmq.producer;import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.common.message.Message;import java.nio.charset.StandardCharsets;/*** User: ldj* Date: 2024/5/26* Time: 15:09* Description: 局部顺序消…

深度神经网络——什么是生成式人工智能?

1.引言 生成式人工智能最近引起了很大的关注。 该术语用于指依赖无监督或半监督学习算法来创建新的数字图像、视频、音频和文本的任何类型的人工智能系统。 麻省理工学院表示&#xff0c;生成式人工智能是过去十年人工智能领域最有前途的进展之一。 通过生成式人工智能&#…

队列(C语言)

文章目录 [TOC](文章目录) 前言1.队列的概念及结构2.队列的实现3.相关操作的具体实现3.1.初始化队列(QueueInit)和销毁队列(QueueDestory)3.2.队尾入队(QueuePush)和队头出队(QueuePop)3.3.判空(QueueEmpty)、获得队尾元素(QueueBack)以及获得队头元素(QueueFront) 前言 前面我…

打卡信奥刷题(20)用Scratch图形化工具信奥B3756 [信息与未来 2021] 幸运数字

本题的基础是进制转换&#xff0c;关于2进制转换可以参考打卡信奥刷题&#xff08;19&#xff09;用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解 知道了2进制&#xff0c;来实现5进制、7进制、9进制是一样的。 [信息与未来 2021] 幸运数字 题目描述 如果⼀个…

内存的基本知识与连续分配管理

目录 一. 内存的基础知识1.1. 什么是内存1.2 指令的工作原理1.2.1 装入的三种方式 - 绝对装入1.2.2 可重定位装入1.2.3 动态重定位装入1.3 从写程序到程序运行 二. 基本内存管理的概念三. 覆盖与交换3.1 覆盖技术3.2 交换技术 四. 连续分配管理方式4.1 单一连续分配4.2 固定分区…