【Python爬虫】使用request和xpath爬取高清美女图片

  📝个人主页:哈__

期待您的关注 

目录

🎈 urlib.request

 🔥具体的方法

✈ lxml

🔥xpath的基本语法

1. 基本路径

2. 选择节点

3. 谓语(Predicates)

4. 通配符

5. 选择多个路径

6. 函数

7. 运算符

8. 轴(Axes)

🔥🔥🔥爬取美女图片

 1.定期请求头

2.获取页面源码

3.爬取我们需要的图片 

一点点小问题

源码如下


使用Python爬虫需要使用以下两个库。

🎈 urlib.request

urllib.request 是 Python 标准库中的一个模块,它提供了用于打开和读取 URLs(统一资源定位符)的接口。通过使用这个模块,你可以很容易地发送 HTTP 和 HTTPS 请求,并处理响应。以下是对 urllib.request 的简要介绍:


urllib.request 模块允许你执行以下操作:

  1. 发送 HTTP/HTTPS 请求:你可以使用 urllib.request.urlopen() 函数或 urllib.request.Request 类与 URL 交互,发送 GET、POST 等请求。
  2. 处理响应:返回的响应对象(通常是 http.client.HTTPResponse 的一个实例)包含了服务器的响应,如状态码、响应头和响应体。你可以使用响应对象的方法如 read() 来读取响应体内容。
  3. 添加请求头:通过创建 urllib.request.Request 对象,你可以为请求添加自定义的请求头,如 User-Agent、Referer 等。
  4. 处理异常urllib.request 模块定义了各种异常,如 urllib.error.HTTPError 和 urllib.error.URLError,以便你能够优雅地处理请求失败和错误情况。
  5. 数据编码:对于 POST 请求,你可能需要将数据编码为适当的格式(如 application/x-www-form-urlencoded 或 multipart/form-data),urllib.parse 模块提供了相关的函数来辅助完成这些任务。
  6. 处理重定向和会话urllib.request 模块能够自动处理 HTTP 重定向,并且可以通过使用 urllib.request.OpenerDirector 和处理器(如 urllib.request.HTTPCookieProcessor)来管理 HTTP 会话和 cookie。
  7. 使用代理:通过设置环境变量或使用 urllib.request.ProxyHandler,你可以配置 urllib.request 使用代理服务器发送请求。

以下代码是一个示例

import urllib.request  
  
# 定义要请求的 URL  
url = 'http://example.com'  
  
# 发送 GET 请求  
with urllib.request.urlopen(url) as response:  
    # 读取响应内容  
    html = response.read()  
      
# 打印响应内容(这里以字符串形式打印,实际可能需要根据需要进行解码)  
print(html.decode('utf-8'))

 🔥具体的方法

 urllib.request.urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None)
  • 功能:打开指定的 URL,并返回一个响应对象。
  • 参数
    • url:要打开的 URL。
    • data(可选):如果请求需要发送数据(如 POST 请求),则将其指定为字节串。
    • timeout(可选):设置请求的超时时间,以秒为单位。
    • cafilecapathcadefault(可选):用于 SSL 证书的验证。
    • context(可选):SSL 上下文对象,允许你定制 SSL 设置。
  • 返回值:一个响应对象,可以使用 .read().getcode().getheader(name) 等方法获取响应内容、状态码和头部信息。

urllib.request.Request(url, data=None, headers={}, method=None, origin_req_host=None, unverifiable=False)
  • 功能:创建一个请求对象,该对象可以被 urlopen() 或自定义的 opener 使用。
  • 参数
    • url:要请求的 URL。
    • data(可选):POST 请求的数据。
    • headers(可选):一个字典,包含自定义的请求头。
    • method(可选):HTTP 请求方法,如 'GET'、'POST' 等。
    • origin_req_host 和 unverifiable(可选):通常不需要手动设置。
  • 返回值:一个 urllib.request.Request 对象。

urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
  • url (str): 要下载的文件的 URL。
  • filename (str, optional): 可选参数,指定保存文件的本地路径和文件名。如果未指定,则使用 URL 中最后的路径组件作为文件名,并保存在当前工作目录下。
  • reporthook (callable, optional): 可选参数,一个回调函数,它将在下载过程中被多次调用,并传递三个参数:一个块号(block number)、一个块大小(block size in bytes)、以及文件总大小(total file size in bytes)。这可以用于实现下载进度的报告。
  • data (bytes, optional): 可选参数,如果提供,它应该是一个字节对象,将被发送到服务器作为 POST 请求的数据。这通常用于发送表单数据或上传文件。

urllib.request.install_opener(opener)
  • 功能:全局安装一个 opener。此后,urlopen() 将使用这个 opener 发送请求。
  • 参数:一个实现了 OpenerDirector 接口的对象。

urllib.request.build_opener([handler, ...])
  • 功能:创建一个 opener 对象,该对象使用提供的处理器(handler)列表来处理请求。
  • 参数:一个或多个处理器对象,如 ProxyHandlerHTTPHandlerHTTPSHandler 等。
  • 返回值:一个 opener 对象。

自定义处理器

你可以通过继承 urllib.request.BaseHandler 或其子类(如 HTTPHandlerHTTPSHandler 等)来创建自定义的处理器。这些处理器可以处理请求的不同方面,如代理、cookie、重定向等。

✈ lxml

在Python中,XPath通常与解析HTML或XML文档的库结合使用,例如lxmlBeautifulSoup。这些库提供了对XPath表达式的支持,使得在HTML/XML文档中查找和提取数据变得简单。下面我将以lxml库为例,介绍Python中XPath的使用。

🔥xpath的基本语法

1. 基本路径

  • /: 从根节点开始选择。
  • //: 从文档中的任意位置开始选择。
  • .: 选择当前节点。
  • ..: 选择当前节点的父节点。

2. 选择节点

  • nodename: 选取此节点的所有子节点。
  • @: 选取属性。例如,@lang 会选取名为 lang 的属性。

3. 谓语(Predicates)

谓语用于查找某个特定的节点或者包含某个指定的值的节点。

  • [1]: 选择第一个子节点。
  • [last()]: 选择最后一个子节点。
  • [last()-1]: 选择倒数第二个子节点。
  • [position()]: 选择某个位置上的节点。
  • [text()]: 选择包含文本的节点。
  • [attr=value]: 选择属性值等于某个值的节点。例如,[@lang='en'] 会选择 lang 属性值为 en 的节点。

4. 通配符

  • *: 匹配任何元素节点。
  • @*: 匹配任何属性节点。

5. 选择多个路径

通过在路径表达式中使用 | 运算符,可以选择多个路径。


6. 函数

XPath包含超过一百个内建函数,这些函数可用于字符串值、数值、日期和时间比较、节点和QName处理、序列处理以及逻辑比较等。一些常用的函数有:

  • text(): 获取节点文本。
  • contains(string1, string2): 如果 string1 包含 string2,则返回 true,否则返回 false。
  • starts-with(string1, string2): 如果 string1 以 string2 开头,则返回 true,否则返回 false。
  • last(): 返回当前上下文中节点的最后一个节点的位置。
  • local-name(): 返回当前节点的本地名称。
  • namespace-uri(): 返回当前节点的命名空间URI。
  • name(): 返回当前节点的名称。
  • string(): 将节点或节点集转换为字符串。
  • string-length(): 返回字符串的长度。
  • substring(string, start, length): 返回字符串的子字符串。
  • concat(string1, string2, ...): 连接两个或多个字符串。
  • normalize-space(string): 规范化字符串中的空白字符。

7. 运算符

XPath 支持一系列运算符,如:

  • orand:逻辑运算符。
  • =!=<><=>=:比较运算符。
  • +-*divmod:算术运算符。

8. 轴(Axes)

XPath 轴可以定义相对于当前节点的节点集。以下是一些常用的轴:

  • child: 选取当前节点的所有子节点。
  • parent: 选取当前节点的父节点。
  • ancestor: 选取当前节点的所有先辈(父、祖父等)。
  • ancestor-or-self: 选取当前节点及其所有先辈。
  • descendant: 选取当前节点的所有后代(子、孙等)。
  • descendant-or-self: 选取当前节点及其所有后代。
  • following: 选取文档中当前节点的结束标签之后的所有节点。
  • preceding: 选取文档中当前节点的开始标签之前的所有节点。
  • following-sibling: 选取当前节点之后的所有同辈节点。
  • preceding-sibling: 选取当前节点之前的所有同辈节点。
  • self: 选取当前节点。

下边是一个xpath使用的小教程。

from lxml import html  
  
# 假设我们有一个HTML字符串  
html_string = """  
<html>  
<head>  
    <title>Example Page</title>  
</head>  
<body>  
    <div class="content">  
        <h1>Welcome to the Example Page</h1>  
        <p class="intro">This is an example paragraph.</p>  
        <ul>  
            <li><a href="https://example.com/item1">Item 1</a></li>  
            <li><a href="https://example.com/item2">Item 2</a></li>  
        </ul>  
    </div>  
</body>  
</html>  
"""  
  
# 使用lxml的html模块将HTML字符串解析为HTML文档对象  
tree = html.fromstring(html_string)  
  
# 使用XPath表达式查找标题(title)元素  
title = tree.xpath('//title/text()')[0]  
print(f"Title: {title}")  
  
# 使用XPath表达式查找所有链接(a)元素的href属性  
links = tree.xpath('//a/@href')  
for link in links:  
    print(f"Link: {link}")  
  
# 使用XPath表达式查找具有特定类的段落(p)元素的内容  
intro_text = tree.xpath('//p[@class="intro"]/text()')[0]  
print(f"Intro text: {intro_text}")

行了不多说了,直接开始我们的主线,爬取美女图片。

🔥🔥🔥爬取美女图片

我要爬取的页面在这里:https://aspx.sc.chinaz.com/query.aspx?keyword=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&issale=&classID=11&navindex=0&page=1

这个链接将会作为我们的url,但并不是固定的,我会把它写成一个动态url,拼接我们要爬取的页码。

 1.定期请求头

我们使用爬虫来访问网页的话可能会因为一些请求头部的信息校验过不去而被阻拦,我们定制一个有请求头的request出来。

先打开我们要爬取的网页,右键点击检查,之后在弹出的功能栏中找到网络模块。

这时候你点进去大概率会什么都没有,我们刷新页面再看。

这时就会有很多的网络请求,我们的目的是爬取图片,那我们就要知道这些图片是哪一个网络请求加载出来的,看图中的红色箭头指向的一个请求,这个就请求就是我们请求的这个美女图片的网页,我们上边给出的网址就是这个。我们从这个请求中拿取我们需要的请求头信息。

这里我只拿了Cookie和User-Agent。下方就是我们的请求头信息。

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
    ,
    'Cookie': 'cz_statistics_visitor=d8de5b1d-e51b-4986-734a-dee6c9baa136; Hm_lvt_aecc9715b0f5d5f7f34fba48a3c511d6=1715078740; Hm_lpvt_aecc9715b0f5d5f7f34fba48a3c511d6=1715078752; Hm_lvt_398913ed58c9e7dfe9695953fb7b6799=1715078772; _clck=wz5o14%7C2%7Cflk%7C0%7C1588; _clsk=1196i88%7C1715078773199%7C1%7C1%7Cu.clarity.ms%2Fcollect; ASP.NET_SessionId=a5jbwhq5z4sq25coftwlvkg4; Hm_lpvt_398913ed58c9e7dfe9695953fb7b6799=1715078929'
}

请求头的定制代码如下。注意我们的url是动态拼接的,需要根据传过来的页码来爬取第几页。

def create_request(page):
    url = f'https://aspx.sc.chinaz.com/query.aspx?keyword=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&issale=&classID=11&navindex=0&page={page}'
    request = urllib.request.Request(url, headers=headers)
    return request

2.获取页面源码

把我们的请求头传进来,然后调用urllib中的request方法获取返回对象,然后通过第二行代码把网页内容读取出来。

def get_content(request):
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')
    return content

3.爬取我们需要的图片 

想要拿到这些图片,我们就要知道这些图片的url到底是什么,我们接着去目标网页看源码,右键->检查->元素。

 分析这个html代码的结构,找到我们图片是被哪个div包着的。


看到class为imgload的div下的结构了吗?这些机构就是我们一个一个的图片,我们想要获取的信息都在这里。一共有两个div,一个叫做im,另一个叫做heis,im当中保存着图片的地址,heis中保存着图片的名称,不信的话你可以把鼠标移动到im中的img标签的src上,看看能不能跳转到这个图片中。我们下载图片,就要使用xpath去把im中的img标签的路径描述出来。


这里其实是有坑的,下方的div中的img根本没有src看到了吗?这里使用了懒加载的方式,你不进行滑动是根本不显示这个src的,所以我们要获取的不是src,而是data-src。


 xpath代码。name_list就是获取所有图片的名称,src_list就是获取所有图片的地址。以图片地址为例。

  1. 我们寻找所有id值为“ulcontent”的div
  2. 然后找到这个div下所有class值为“im”的div
  3. 找class值为“im”的div下的a标签
  4. 然后找到a标签下的img标签
  5. 获取img标签的data-src属性的值。
 name_list = tree.xpath('//div[@id="ulcontent"]//div[@class="heis"]//a/text()')
 src_list = tree.xpath('//div[@id="ulcontent"]//div[@class="im"]//a/img/@data-src')

有了xpath路径,我们就可以通过以下代码进行下载了。一定要注意斜杠的问题,我们爬下来的路径都是反斜杠,我们替换一下,同时添加一个https协议,就可以调用request库中的方法下载了。

  for i in range(len(name_list)):
        pic_url = "https:" + src_list[i]
        pic_url = pic_url.replace('\\',"/")
        pic_url = "https:" + pic_url
        urllib.request.urlretrieve(url=pic_url,filename="./站长素材/"+name_list[i]+".jpg")

一点点小问题

但是你可能会发现,我们爬取的都是缩略图,并不是高清图,我们的页面结构分析的没问题,但就是爬取的图片并不是真正的图片,真正的图片在这个网页中。 

所以我们的代码要变一变,我们先把这个网页爬下来,然后再次通过request请求去访问这个网页,然后分析一下这个网页的结构,拿到这里的图片。

源码如下

import urllib.request
from lxml import etree

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
    ,
    'Cookie': 'cz_statistics_visitor=d8de5b1d-e51b-4986-734a-dee6c9baa136; Hm_lvt_aecc9715b0f5d5f7f34fba48a3c511d6=1715078740; Hm_lpvt_aecc9715b0f5d5f7f34fba48a3c511d6=1715078752; Hm_lvt_398913ed58c9e7dfe9695953fb7b6799=1715078772; _clck=wz5o14%7C2%7Cflk%7C0%7C1588; _clsk=1196i88%7C1715078773199%7C1%7C1%7Cu.clarity.ms%2Fcollect; ASP.NET_SessionId=a5jbwhq5z4sq25coftwlvkg4; Hm_lpvt_398913ed58c9e7dfe9695953fb7b6799=1715078929'
}
def create_request(page):
    url = f'https://aspx.sc.chinaz.com/query.aspx?keyword=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&issale=&classID=11&navindex=0&page={page}'
    request = urllib.request.Request(url, headers=headers)
    return request


def get_content(request):
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')
    return content


def download(html):
    tree = etree.HTML(html)
    name_list = tree.xpath('//div[@id="ulcontent"]//div[@class="heis"]//a/text()')
    src_list = tree.xpath('//div[@id="ulcontent"]//div[@class="im"]//a/@href')
    for i in range(len(name_list)):
        pic_url = "https:" + src_list[i]
        pic_url = pic_url.replace('\\',"/")
        # 再次发送请求
        request = urllib.request.Request(pic_url, headers=headers)
        response = urllib.request.urlopen(request)
        # 获得高清图片的页面源码
        content = response.read().decode('utf-8')
        tree2 = etree.HTML(content)
        # 找到高清图片的地址
        pic = tree2.xpath('//div[@class="container"]//div[@class="img-box"]/img/@src')[0]
        pic = "https:" + pic
        urllib.request.urlretrieve(url=pic,filename="./站长素材高清/"+name_list[i]+".jpg")


if __name__ == '__main__':
    request = create_request('1')
    html = get_content(request)
    download(html)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OV证书——企业网站的第一选择

据官方数据统计&#xff0c;从2024年开始OV证书的签发量远远超过DV证书的签发量&#xff0c;越来越多的企业网站摒弃了基础的DV证书&#xff0c;选择更高级别的OV证书。 但是其价格相对于DV证书来说要高几百甚至上千元&#xff0c;这里推荐性价比很高的JoySSL&#xff0c;他们…

邦注科技给您解答 什么是注塑机模具保护器

模具监视器&#xff0c;这位制造业的守护神&#xff0c;时刻注视着模具的每一个细微变化。它的工作原理如同一位细心的侦探&#xff0c;利用传感器、数据采集系统和监控软件组成的精良装备&#xff0c;探寻模具的秘密。 传感器如同模具的耳目&#xff0c;敏锐地捕捉着模具的温度…

Elasticsearch的使用

Elasticsearch 1、认识和安装 Elasticsearch的官方网站如下&#xff1a; https://www.elastic.co/cn/elasticsearch Elasticsearch是由elastic公司开发的一套搜索引擎技术&#xff0c;它是elastic技术栈中的一部分。完整的技术栈包括&#xff1a; Elasticsearch&#xff1…

Ps 滤镜:渲染

Ps菜单&#xff1a;滤镜/渲染 Filter/Render “渲染”子菜单中的滤镜主要用于生成或模拟各种自然和抽象的视觉效果&#xff0c;这些效果通常很难通过传统的摄影或手绘技术实现。这类滤镜能够为设计师和艺术家提供强大的工具&#xff0c;以增强图像的视觉冲击力、创造性或实现特…

11.偏向锁原理及其实战

文章目录 偏向锁原理及其实战1.偏向锁原理2.偏向锁案例代码演示2.1.偏向锁案例代码2.2.1.无锁情况下状态2.1.2.偏向锁状态2.1.3.释放锁后的状态 2.2.偏向锁的膨胀和撤销2.2.1.偏向锁撤销的条件2.2.2.偏向锁的撤销 2.2.3.偏向锁的膨胀 2.3.全局安全点原理和偏向锁撤销性能问题2.…

Electron项目中将CommonJS改成使用ES 模块(ESM)语法preload.js加载报错

问题 将Electron项目原CommonJS语法改成使用ES 模块&#xff08;ESM&#xff09;语法&#xff0c;preload.js一直加载不到&#xff0c;报错如下&#xff1a; VM111 renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js VM111 renderer_init:2 E…

今日刷三题(day11):不同路径的数目(一)+短距离最小路径和+把数字翻译成字符串

题目一&#xff1a;不同路径的数目&#xff08;一&#xff09; 题目描述&#xff1a; 一个机器人在mn大小的地图的左上角&#xff08;起点&#xff09;。机器人每次可以向下或向右移动。机器人要到达地图的右下角&#xff08;终点&#xff09;。可以有多少种不同的路径从起点…

全栈开发之路——前端篇(6)生命周期和自定义hooks

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

C#语言基础

一、复杂数据类型 1. 枚举 1.1 基本概念 1.1.1 枚举是什么 枚举是一个被命名的整型常量的集合&#xff0c;一般用它来表示状态、类型等等 1.1.2 申明枚举和申明枚举变量 申明枚举和申明枚举变量是两个概念 申明枚举&#xff1a;相当于是创建一个自定义的枚举类型 申明枚…

十大标准:评价B端系统界面美感度,你看了你也会。

美感和易用是评价B端系统用户体验的最高原则&#xff0c;本期从先从美感角度来分析B端界面 评价B端系统界面美感度的十大标准可以根据设计原则和用户体验来进行评估&#xff0c;以下是一些常见的标准&#xff1a; 一致性 界面元素的风格、布局和交互应该保持一致&#xff0c;…

Flutter连接websocket、实现在线聊天功能

老规矩效果图: 第一步:引入 web_socket_channel: ^2.4.0 第二步:封装 websocket.dart 单例 import dart:async; import dart:convert; import package:web_socket_channel/web_socket_channel.dart; import package:web_socket_channel/io.dart;class WebSocketManager {…

森林消防—高扬程水泵:守护绿色屏障的专业利器/恒峰智慧科技

在广袤的森林中&#xff0c;火灾无疑是最具破坏性的灾难之一。为了及时应对森林火灾&#xff0c;保护珍贵的自然资源和生态平衡&#xff0c;高效的消防设备显得尤为重要。森林消防高扬程水泵便是其中一款专业设备&#xff0c;以其高效输送水源的能力&#xff0c;成为守护森林绿…

Denoising diffusion models for out-of-distribution detection

Denoising diffusion models for out-of-distribution detection 摘要1 介绍2 相关工作2.1 基于生成得方法2.2 基于重构的方法3 方法3.1.扩散模型3.2.多次重建3.3.相似性评估4实验4.1. Experimental details4.2. Results for computer vision datasets4.3医学数据集上的结果4.4…

python 12实验

1.导入数据。 2.清洗数据&#xff0c;将缺失值或“NAN”替换为“无”&#xff0c;并将文本数据转换为数值型数据。 3.使用聚类算法&#xff08;如KMeans&#xff09;对数据进行聚类&#xff0c;并计算样本到簇中心的平均距离以确定最佳的簇数量。 4.对数据进行PCA降维&#xff…

Django Admin后台管理:高效开发与实践

title: Django Admin后台管理&#xff1a;高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories: 后端开发 tags: DjangoAdmin模型管理用户认证数据优化自定义扩展实战案例性能安全 第1章&#xff1a;Django Admin基础 1.1 Django Admin简介 Dj…

AI预测福彩3D第10套算法实战化赚米验证第1弹2024年5月5日第1次测试

从今天开始&#xff0c;准备启用第10套算法&#xff0c;来验证下本算法的可行性。因为本算法通过近三十期的内测&#xff08;内测版没有公开预测结果&#xff09;&#xff0c;发现本算法的预测结果优于其他所有算法的效果。彩票预测只有实战才能检验是否有效&#xff0c;只有真…

旅游出行大热!景区电话却打不通了?

根据文化和旅游部5月6日发布的数据显示,今年“五一”假期,全国国内旅游出游合计2.95亿人次。 这个数据可以看出出游的热度是非常高的&#xff0c;但有网友表示在旅游的时候遇到糟心的事情&#xff0c;比如无法联系到景区&#xff0c;网友吐槽自己打电话20次仅仅接通了一次&…

前端奇怪面试题总结

面试题总结 不修改下面的代码进行正常解构 这道题考的是迭代器和生成器的概念 let [a,b] {a:1,b:2}答案 对象缺少迭代器&#xff0c;需要手动加上 Object.prototype[Symbol.iterator] function* (){// return Object.values(this)[Symbol.iterator]()return yeild* Object.v…

场外期权个股怎么对冲?

今天期权懂带你了解场外期权个股怎么对冲&#xff1f;场外个股期权是一种在非交易所市场进行的期权交易&#xff0c;它允许投资者针对特定的股票获得未来买入或卖出的权利。 场外期权个股怎么对冲&#xff1f; 持有相反方向的期权&#xff1a;这是最直接的对冲方法&#xff0c…

一分钟教你学浪app视频怎么缓存

你是否在学浪app上苦苦寻找如何缓存视频的方法&#xff1f;你是否想快速、轻松地观看自己喜欢的视频内容&#xff1f;那么&#xff0c;让我们一起探索一分钟教你如何缓存学浪app视频的技巧吧&#xff01; 学浪下载工具我已经打包好了&#xff0c;有需要的自己下载一下 学浪下…