静态资源介绍 selenium

静态资源介绍

静态资源指的是在服务器端生成后,不会在客户端进行动态改变的资源。这些资源在请求时,服务器直接返回内容,客户端只需渲染即可。常见的静态资源包括:

  1. HTML 文件:包含网页的结构和内容。
  2. CSS 文件:定义网页的样式和布局。
  3. JavaScript 文件:提供网页的客户端脚本功能。
  4. 图片、音频、视频:多媒体内容。
  5. 字体文件:用于网页的自定义字体。

静态资源的优点包括:

  • 性能高:服务器不需要在每次请求时生成内容。
  • 易于缓存:客户端和CDN可以高效缓存静态资源,提高加载速度。
  • 简单性:不涉及复杂的服务器端逻辑。

使用 Selenium 对静态资源进行爬取和整理

Selenium 是一个用于自动化浏览器操作的工具,它可以模拟用户行为,如点击、输入、滚动等。尽管 Selenium 通常用于处理动态内容,但它也能用于爬取和整理静态资源。以下是一个示例方案,展示如何使用 Selenium 爬取网页的静态资源,并对其进行解析和整理。

安装依赖

首先,需要安装 Selenium 和一个 WebDriver(以 Chrome 为例):

pip install selenium

下载 ChromeDriver,并将其添加到系统 PATH。

爬取静态资源的示例代码

以下代码示例展示了如何使用 Selenium 爬取网页上的静态资源(如图片和 CSS 文件),并将其整理存储:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import os
import requests
from urllib.parse import urljoin, urlparse

# 配置 WebDriver
chrome_service = Service(executable_path='/path/to/chromedriver')  # 将此路径替换为你的 ChromeDriver 路径
driver = webdriver.Chrome(service=chrome_service)

# 目标网址
url = 'https://example.com'

# 打开目标网址
driver.get(url)

# 创建目录以保存资源
output_dir = 'static_resources'
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# 获取所有的图片
images = driver.find_elements(By.TAG_NAME, 'img')
for img in images:
    src = img.get_attribute('src')
    if src:
        # 解析图片 URL
        img_url = urljoin(url, src)
        img_data = requests.get(img_url).content
        # 保存图片
        img_name = os.path.join(output_dir, os.path.basename(urlparse(img_url).path))
        with open(img_name, 'wb') as f:
            f.write(img_data)
        print(f'Image saved: {img_name}')

# 获取所有的 CSS 文件
links = driver.find_elements(By.TAG_NAME, 'link')
for link in links:
    if link.get_attribute('rel') == 'stylesheet':
        href = link.get_attribute('href')
        if href:
            # 解析 CSS URL
            css_url = urljoin(url, href)
            css_data = requests.get(css_url).content
            # 保存 CSS 文件
            css_name = os.path.join(output_dir, os.path.basename(urlparse(css_url).path))
            with open(css_name, 'wb') as f:
                f.write(css_data)
            print(f'CSS file saved: {css_name}')

# 关闭浏览器
driver.quit()
解析和整理

在上述代码中,我们已经下载并保存了网页中的图片和 CSS 文件。接下来,可以根据具体需求进行进一步解析和整理。

例如,可以解析 CSS 文件,提取其中使用的字体和背景图片链接,并将这些资源也下载保存。或者,可以分析图片文件,检查它们的分辨率、大小等信息,并生成统计报告。

扩展和优化
  1. 处理更多类型的静态资源:可以扩展代码,处理 JavaScript 文件、视频、音频等其他类型的静态资源。
  2. 处理相对路径:确保所有资源链接都被正确解析为绝对路径。
  3. 并发下载:对于大量资源,可以使用多线程或异步方式加速下载。
  4. 错误处理和重试机制:在下载过程中添加错误处理和重试机制,提高鲁棒性。

结论

使用 Selenium 爬取和整理静态资源是一个简单而有效的方法。通过自动化浏览器操作,可以轻松获取网页中的各种静态资源,并对其进行进一步解析和整理。随着需求的变化,可以不断扩展和优化这一方案,适应更多的应用场景。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
爬取动态网页可以使用WebMagic和Selenium两种工具。WebMagic是一个Java爬虫框架,用于解析静态页面,但无法满足爬取动态页面的需求。为了爬取JavaScript被解析后的页面,我们需要借助Selenium来测试和爬取动态页面的代码。 首先,我们需要下载和引入一些资源和依赖。其中,selenium-devtools-v86是selenium-java的一个依赖项,版本号要与selenium-java一致。我们还需要远程调试Google Chrome浏览器,以允许通过HTTP协议与浏览器通信。为此,我们需要添加以下依赖项: ```xml <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-devtools-v86</artifactId> <version>4.0.0-beta-2</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.0.0-beta-2</version> </dependency> ``` 接下来,我们需要下载ChromeDriver,并将其放置在C:\Windows\System32目录下(或者使用System.setProperty("webdriver.chrome.driver", chromedriver.exe的路径)指定驱动程序的路径)。这样做是为了在运行代码时能够找到驱动程序。 综上所述,您可以使用WebMagic和Selenium来爬取动态网页。通过配置好依赖和驱动程序,您可以编写代码来实现您的爬取需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Java-Crawler】爬取动态页面(WebMagic、Selenium、ChromeDriver)](https://blog.csdn.net/qq_63691275/article/details/130839969)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大霸王龙

+V来点难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值