DrissionPage实战之爬取极简壁纸

# DrissionPage 实战:极简壁纸爬取之旅

## 引言

在这个信息爆炸的时代,我们每天都被海量的图片和信息所包围,但有时候,我们只想要一些简单而纯粹的美。极简壁纸以其简洁、干净的风格,成为了许多人桌面背景的首选。今天,我将带领大家使用DrissionPage这一强大的工具,来实现自动化爬取极简壁纸网站的图片。

## DrissionPage 简介

DrissionPage 是一个基于Python的网页自动化工具,它能够帮助我们模拟浏览器操作,实现网页的自动化访问、元素定位、点击等操作。它支持Chrome浏览器,可以与Selenium等工具相媲美,但DrissionPage更加轻量级,启动速度更快。

## 环境准备

在开始之前,请确保你已经安装了以下工具和库:

- Python 3.x
- DrissionPage
- requests
- os

如果尚未安装DrissionPage和requests,可以通过pip进行安装:

```bash
pip install DrissionPage requests
```

## 代码实现

### 1. 导入必要的库

```python
# -*- encoding:utf-8 -*-
from DrissionPage import ChromiumPage
import os
import requests
from TimePinner import Pinner  # 导入计时工具
```

### 2. 初始化计时器和页面对象

```python
pinner = Pinner()  # 创建计时器对象
pinner.pin()  # 标记开始记录

page = ChromiumPage()  # 创建页面对象
```

### 3. 创建保存图片的目录

```python
save_dir = './imgs'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)
```

### 4. 访问目标网页并开始爬取

```python
page.get('https://bz.zzzmh.cn/index')  # 访问目标网页
```

### 5. 遍历并下载图片

我们将遍历两页的图片,以节省目标网站的流量。

```python
for _ in range(2):
    for button in page.s_eles('.down-span'):
        a = button('t:a')
        img_url = a.attr('href')
        print(img_url)  # 打印图片链接

        response = requests.get(img_url, stream=True)
        img_name = img_url.split('/')[-1].split('.')[0] + '.jpg'
        img_path = os.path.join(save_dir, img_name)
        with open(img_path, 'wb') as f:
            f.write(response.content)
        print(f"图片已保存: {img_path}")

    next_button = page('下一页')
    if next_button:
        next_button.click()
        page.wait.load_start()  # 等待页面加载
    else:
        break
```

### 6. 记录并打印爬取用时

```python
pinner.pin('用时')  # 记录并打印时间
```

## 结语

通过以上步骤,我们成功地实现了使用DrissionPage自动化爬取极简壁纸网站的功能。这不仅节省了我们手动下载图片的时间,也让我们对网页自动化有了更深的理解。希望这篇文章能够帮助到对网页自动化感兴趣的你,让我们一起探索更多的可能性!

## 代码结果

## 附录

- **DrissionPage文档**: [DrissionPage官方文档](https://drissionpage.readthedocs.io/)
- **代码示例**: [GitHub上的示例代码](python/DrissionPage实战之爬取极简壁纸.py at main · OnePieceLwc/python (github.com))

---

完整代码:

# -*- encoding:utf-8 -*-
from DrissionPage import ChromiumPage
import os
import requests

from TimePinner import Pinner  # 导入计时工具
pinner = Pinner()  # 创建计时器对象
pinner.pin()  # 标记开始记录
# 创建页面对象
page = ChromiumPage()

# 创建保存图片的目录
save_dir = './imgs'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

# 访问目标网页
page.get('https://bz.zzzmh.cn/index')

# 爬取2页,给作者省点流量
for _ in range(2):
    # 遍历一页中所有壁纸图片
    for button in page.s_eles('.down-span'):
        # 获取封面图片对象
        a = button('t:a')
        img_url = a.attr('href')
        print(img_url)  # 打印图片链接

        # 保存图片
        response = requests.get(img_url, stream=True)
        img_name = img_url.split('/')[-1].split('.')[0] + '.jpg'
        img_path = os.path.join(save_dir, img_name)
        with open(img_path, 'wb') as f:
            f.write(response.content)
        print(f"图片已保存: {img_path}")

    # 点击下一页
    next_button = page('下一页')
    if next_button:
        next_button.click()
        page.wait.load_start()  # 等待页面加载
    else:
        break

pinner.pin('用时')  # 记录并打印时间


 

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
DrissionPage是一个Python库,用于爬取和解析动态加载内容的网页。它结合了JavaScript渲染技术,比如Puppeteer(一个Node.js库)或类似的工具,能够在服务器端模拟浏览器行为,从而获取那些依赖前端脚本加载的数据。 以下是使用DrissionPage爬取动态网页的基本步骤: 1. 安装DrissionPage:首先你需要安装DrissionPage,你可以通过pip安装: ``` pip install drissionpage ``` 2. 引入并初始化:在Python代码中,导入`drission.DrissionPage`类,并创建一个实例。 ```python from drission import DrissionPage browser = DrissionPage() ``` 3. 设置代理(如果需要):DrissionPage支持设置HTTP代理,以防被目标网站屏蔽。 ```python browser.set_proxy('http://your-proxy-url:port') ``` 4. 打开页面:指定你要抓取的网页URL。 ```python page = browser.open_url('https://www.example.com/dynamic-page') ``` 5. 延迟加载:动态加载的内容可能需要等待一段时间才会出现,这时你可以调用`wait_for_selector`或`execute_script`等方法来等待条件满足。 ```python page.wait_for_selector('.dynamic-element') # 等待某个元素加载 data = page.execute_script('return document.getElementById("data").innerHTML;') # 执行JS并获取数据 ``` 6. 数据提取:使用`get_element`、`evaluate`或XPath等方式,从页面上获取所需数据。 ```python result = page.get_element('#targetElement').text ``` 7. 结束会话:爬取完成后,记得关闭浏览器会话。 ```python browser.close() ``` 8. 处理数据:最后,处理爬取到的数据,存储或进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LucianaiB

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值