首页 > 编程语言 >XV-Python-requests_html

XV-Python-requests_html

时间:2024-05-28 19:34:06浏览次数:28  
标签:函数 Python html urlretrieve requests 下载

目录

        1.requests_html

        1.1.什么是requests_html

        1.2.安装与配置

        1.3.快速入门

        1.4.图片下载

        2. 思维导图


1.requests_html

1.1.什么是requests_html

requests_html是一个Python库,用于从Web页面中提取数据。它提供了对HTML内容的解析和处理功能,使您可以轻松地从网页中提取文本、链接、图像和其他元素。

requests_html库建立在另一个流行的Python库requests之上,并使用了lxml来解析HTML。它提供了一种简单而灵活的方法来发送HTTP请求并解析响应中的HTML内容。

使用requests_html,可以发送GET或POST请求,从HTML响应中提取元素,执行JavaScript渲染,处理表单提交,模拟用户与网页的交互等等。它还支持基于CSS选择器和XPath表达式的元素选择,方便地定位和提取特定的网页元素。

1.2.安装与配置

pip install requests-html

1.3.快速入门

使用requests_html模块获取页面中的所有绝对链接的示例代码:

# 创建一个会话
session = requests_html.HTMLSession()
# 起送GET请求并获取页面内容
resp = session.get("https://www.igdcc.com/shouji/katong/") # type: requests_html.HTMLResponse
# 渲染JavaScript
resp.html.render()
​
# 获取页面中所有的绝对链接
lst = list(resp.html.absolute_links)
print(lst)

因为是第一次使用render函数,需要安装chromium,这里需要花费一定的时间,请耐心等待。

在上述示例中,response.html.absolute_links会返回一个包含页面中所有绝对链接的集合(Set)。可以使用for循环遍历并打印其中的链接。

1.4.图片下载

urllib.request.urlretrieve函数是Python标准库中urllib.request模块提供的一个方法,用于从指定的URL下载文件并保存到本地。

下面是urllib.request.urlretrieve()函数的完整参数说明:

  • url:必需,要下载的文件的URL地址。

  • filename:必需,保存文件的本地路径和文件名。如果未指定此参数,则会将文件保存到临时目录中,返回保存的临时文件名。

  • reporthook:可选,一个回调函数,用于显示下载进度。可以是一个自定义的回调函数,格式为 reporthook(count, blockSize, totalSize),其中count表示已经下载的数据块数量,blockSize表示每个数据块的大小,totalSize表示要下载的文件的总大小。默认情况下,不会显示下载进度。

  • data:可选,要发送的额外数据。可以是一个字节流(str或bytes类型)或者一个文件对象。如果指定了此参数,urlretrieve()函数会使用POST请求发送数据。

  • headers:可选,一个字典类型,表示发送请求时的头部信息。

  • origin_req_host:可选,字符串类型,表示原始请求的主机名。用于在重定向时设置 Referer 头部。默认情况下,origin_req_hostNone

  • unverifiable:可选,布尔值,表示请求是否可验证。如果设置为True,则会跳过某些HTTPS验证步骤。默认值为False

注意:urllib.request.urlretrieve()函数的执行会阻塞当前线程,直到下载完成。

入门案例:

参考地址:卡通4K手机壁纸_高清卡通手机桌面图片_极品桌面

可先通过浏览器的XPath工具方式定位元素具体地址,如下:

基本代码:

# 通过xpath获取页面中满足条件的图片
urls = resp.html.xpath("""//a/img/@data-original""")
for url in urls:
    print(f"正在下载【"+url+"】,请稍等...")
    urllib.request.urlretrieve(url,f"images/{uuid.uuid4()}.jpg")

调用urllib.request.urlretrieve()函数时,可以通过提供一个回调函数来显示下载进度。如下所示:

def show(count, blockSize, totalSize):
    """
    回调函数用于显示下载进度
    :param count: 已经下载的数据块数量
    :param blockSize: 每个数据块的大小
    :param totalSize: 要下载的文件的总大小
    :return:
    """
    percent = round((count * blockSize / totalSize),1) * 100
    print(f"正在下载: {percent}%")
    time.sleep(0.1)
    
# 通过xpath获取页面中满足条件的图片
urls = resp.html.xpath("""//a/img/@data-original""")
for url in urls:
    print(f"正在下载【"+url+"】,请稍等...")
    urllib.request.urlretrieve(url,f"images/{uuid.uuid4()}.jpg",show)

2. 思维导图

 

----------------------------------------------------------------------------------------♥-------------------------------------------------------------------------------------

往期Python内容:

Ⅰ-Python入门与基本语法

Ⅱ-Python运算符(进阶语法)

Ⅲ-Python函数的使用

Ⅳ-Python函数进阶

Ⅴ-Python面向对象

Ⅵ-Python模块使用

Ⅶ-Python标准库

Ⅷ-Python数据库

Ⅸ-Python图形界面(Tkinter)

Ⅹ-Python爬虫使用

Ⅺ-Python正则解析

Ⅻ-Python(selenium爬取)

XⅢ-Python解析网页

IX-Python-XPath

标签:函数,Python,html,urlretrieve,requests,下载
From: https://blog.csdn.net/Love_Ban/article/details/139229846

相关文章

  • 用python字典统计CSV数据
    1.用python字典统计CSV数据的步骤和代码示例为了使用Python字典来统计CSV数据,我们可以使用内置的csv模块来读取CSV文件,并使用字典来存储统计信息。以下是一个详细的步骤和完整的代码示例:1.1步骤(1)导入csv模块。(2)打开CSV文件并读取数据。(3)初始化一个空字典来存储统计信息。(4)遍......
  • Python|module 的 __spec__ 属性
    Python的module(模块)**【官方文档】**位置:https://docs.python.org/zh-cn/3/library/stdtypes.html#modules模块唯一的特殊操作是属性访问:m.name,这里m为一个模块而name访问定义在m的符号表中的一个名称。模块属性可以被赋值。(请注意import语句严格来说也是......
  • 使用Python进行数据分析与可视化的简单示例
    使用Python进行数据分析与可视化的简单示例。在这个示例中,我们将使用Pandas库进行数据分析,并使用Matplotlib库进行数据可视化。首先,假设我们有一个包含销售数据的CSV文件(sales_data.csv),其中包含以下列:日期(Date)、销售额(Sales)和产品类别(Product_Category)。CSV文件的内容可能......
  • Python基础篇(集成开发环境 PyCharm )
    PyCharm简介与下载PyCharm是由JetBrains打造的一款PythonIDE,是一款功能强大的Python编辑器,具有跨平台性,支持macOS、Windows、Linux系统。PyCharm具有:调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等优点。PyCharm下载地址:......
  • html+CSS部分基础运用8
    1.P147实验1,完成页面制作效果。图7-1木兰花令效果图2.P147实验2,完成页面制作效果。项目1<!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <linktype="text/css">  <title>木兰花令</title>......
  • html+CSS部分基础运用7
    项目1 设计简易灯箱画廊1.实验所需素材在trees文件夹中提供一个MP3文件和18个JPG文件,设计页面时可以使用。2.编程实现简易灯箱画廊,鼠标单击任一个图像超链接,在底部浮动框架中显示大图像,效果如图4-1所示的页面。图4-1简易灯箱画廊项目2 设计支持音频、视频播放的......
  • Python 文件操作指南:使用 open 和 with open 实现高效读写
    ......
  • 流畅的python--第五章/第六章
    数据类构建器一个简单的类,表示地理位置的经纬度。使用nametuple构建Coordinate类。namedtuple是一个工厂方法,使用指定的名称和字段构建tuple的子类。典型的具名元组collections.namedtuple是一个工厂函数,用于构建增强的tuple子类,具有字段名称、类名和提供有用的信息的__repr_......
  • 基于Python实现可视化分析中国500强排行榜数据的设计与实现
    基于Python实现可视化分析中国500强排行榜数据的设计与实现“DesignandImplementationofVisualAnalysisforChina’sTop500CompaniesRankingDatausingPython”完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现文章目录基于Python......
  • Python魔法之旅-魔法方法(01)
    目录一、概述1、定义2、作用二、主要应用场景1、构造和析构2、操作符重载3、字符串和表示4、容器管理5、可调用对象6、上下文管理7、属性访问和描述符8、迭代器和生成器9、数值类型10、复制和序列化11、自定义元类行为12、自定义类行为13、类型检查和转换14......