爬虫案例:彼岸图网4K图片数据爬取

本文介绍了如何使用Python爬取4K图片网站,包括使用requests库处理SSL错误,使用lxml解析HTML,以及实现文件名清理和重试机制,同时提供了异步版本的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这个网站的4K图片还是挺好看的,不要一下大量爬取网站,不听,后果自负ヽ(`⌒´メ)ノ!!!
主要目标就是4K图片爬取,

pip install requests
pip install lxml

网站分析

  • 目标网站:https://pic.netbian.com

第一页 http://pic.netbian.com/4kdongman/
第二页 https://pic.netbian.com/4kdongman/index_2.html
第三页 https://pic.netbian.com/4kdongman/index_3.html
第一页与其他页url不同

demo demo
  • 问题解决

Q:代码遇到的问题是由于文件名中包含了不合法的字符
A:

def sanitize_filename(filename):
    """
    Define disallowed characters
    parms:
        filename: str, the filename to be sanitized
    returns:
        str, the sanitized filename
    """ 
    invalid_chars = '<>:"/\\|?*'
    for char in invalid_chars:
        filename = filename.replace(char, '_')
    return filename

Q:requests.exceptions.SSLError,这是一个 SSL 连接错误,通常发生在尝试通过 HTTPS 协议连接到服务器时。如果连接中断或服务器的 SSL 证书无效,可能会出现这种错误。
A:

  1. 忽略 SSL 验证:你可以在 requests.get 中添加 verify=False 参数来忽略 SSL 证书验证。注意:这会使你的连接不再安全,应该谨慎使用。
  2. 重试机制:可以添加一个简单的重试机制,以便在遇到错误时重新尝试下载图片。
    • 使用 requests.Session 和 requests.adapters.HTTPAdapter 创建一个带有重试机制的会话。
    • 设置重试策略,最多重试 5 次,每次重试之间有 0.1 秒的延迟。
    • 捕获请求异常:使用 try…except 块捕获 requests.exceptions.RequestException 异常,并在遇到错误时打印错误信息。

无异步版本

import requests
import os
from lxml import etree
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry


def sanitize_filename(filename):
    """
    Define disallowed characters
    parms:
        filename: str, the filename to be sanitized
    returns:
        str, the sanitized filename
    """ 
    invalid_chars = '<>:"/\\|?*'
    for char in invalid_chars:
        filename = filename.replace(char, '_')
    return filename

# 创建一个带有重试机制的会话
session = requests.Session()
retries = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])
session.mount('https://', HTTPAdapter(max_retries=retries))

# (1)数据获取:请求网页
headers = {
   
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值