python爬虫之爬取堆糖图片

  1. 导入必要的模块:

    python

    import requests
    from bs4 import BeautifulSoup
    import os
    

    这些模块是程序的核心部分:

    • requests 用于发送网络请求并获取响应。
    • BeautifulSoup 用于解析HTML代码。
    • os 用于与操作系统进行交互,例如创建文件夹。
  2. 设置请求头:

    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'
    }
    

    请求头是发送请求时的一部分,它们向服务器提供有关请求者的信息。这里,我们设置了浏览器的用户代理字符串,以便服务器认为我们的请求是由真实的浏览器发出的,而不是由脚本发出的。

  3. 获取搜索词:

    sousuo = input('主人要看什么图片~:')
    

    这行代码提示用户输入他们想要搜索的图片类型。用户的输入将存储在变量 sousuo 中。

  4. 获取目标网页:

    url = 'https://www.duitang.com/search/?kw=' + sousuo + '&type=feed'
    response = requests.get(url, headers=headers)
    html = response.text  # 从响应中提取文本内容
    

    这部分代码首先构建了搜索图片的URL,然后使用 requests.get() 方法发送GET请求并获取响应。响应对象 response 包含了请求的详细信息,包括响应体(即HTML内容)。通过访问 response.text,我们提取了HTML文本。

  5. 解析HTML代码:

    soup = BeautifulSoup(html, 'html.parser')
    imgs = soup.find_all('img')
    

    使用 BeautifulSoup 解析提取的HTML文本。soup.find_all('img') 获取HTML中所有的 <img> 标签,这些标签通常包含图片的URL。

  6. 创建保存图片的文件夹:

    folder = search
    if not os.path.exists(folder):
        os.makedirs(folder)
    

    这部分代码检查是否已存在以搜索词命名的文件夹。如果不存在,则使用 os.makedirs() 创建一个新文件夹。

  7. 下载并保存图片:

    for img in imgs:
        src = img.get('src')
        if src:
            src = "https:" + src if src.startswith("//") else src
            name = os.path.basename(src)
            img_data = requests.get(src, headers=headers).content
            with open(os.path.join(folder, name), 'wb') as f:
                f.write(img_data)
                print(f"下载完成: {name}")
    

    这是一个循环,遍历所有找到的 <img> 标签。对于每个标签,我们执行以下操作:

    • 获取图片的 src 属性,它包含图片的URL。
    • 如果URL以 // 开头,则将其转换为绝对URL。
    • 使用 os.path.basename() 从URL中提取图片的名称。
    • 使用 requests.get() 请求图片数据。
    • 使用 with open() 保存图片数据到本地文件夹。
    • 打印下载完成的信息

 完整代码如下:

import requests
from bs4 import BeautifulSoup
import os

# 设置请求头
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'
}

# 获取搜索词
sousuo = input('主人要看什么图片~:')

# 获取目标网页
url = 'https://www.duitang.com/search/?kw=' + sousuo + '&type=feed'
response = requests.get(url, headers=headers)
html = response.text  # 从响应中提取文本内容

# 解析HTML代码
soup = BeautifulSoup(html, 'html.parser')
imgs = soup.find_all('img')

# 创建保存图片的文件夹
search = sousuo  # 从HTML代码中提取搜索词
folder = search
if not os.path.exists(folder):
    os.makedirs(folder)

# 下载并保存图片
for img in imgs:
    src = img.get('src')
    if src:
        # 转换为绝对路径
        src = "https:" + src if src.startswith("//") else src
        # 获取图片名称
        name = os.path.basename(src)
        # 请求图片并保存
        img_data = requests.get(src, headers=headers).content
        with open(os.path.join(folder, name), 'wb') as f:
            f.write(img_data)
            print(f"下载完成: {name}")

 

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值