import requests
from bs4 import BeautifulSoup
import os

# 定义下载图片的函数
def download(url):
    res = requests.get(url)   #图片是二进制编写的,放在content里面
    img_data = res.content
    filename = os.path.join('img1', url.split('/')[-1])
    if not os.path.exists(filename):
        with open(filename, 'wb') as f:   #以二进制格式打开文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
            f.write(img_data)

# 定义获取网页并下载图片的函数
def get_html():
    for i in range(3, 20):  # 获取第2到19页的图片
        url = f'http://www.netbian.com/index_{i}.htm'
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
        res = requests.get(url, headers=headers)
        res.encoding = 'gbk' #解码
        if res.status_code == 200:  #判断是不是空。404错的
            html = res.text    #可以打印html排队是不是乱码
            soup = BeautifulSoup(html, 'lxml')   #文本文件
            all_list = soup.find(class_='list')
            all_imgs = all_list.find_all('img')
            if not os.path.exists('img1'):
                os.makedirs('img1')
            for img in all_imgs:
                src = img['src']
                download(src)

if __name__ == '__main__':
    get_html()

代码解释:

  1. 导入库: 导入requests、BeautifulSoup和os库,分别用于发送请求、解析HTML和文件操作。

  2. 下载图片函数: download(url) 函数负责从给定的URL下载图片并保存到本地。

  3. 获取网页并下载图片函数: get_html() 函数负责循环获取网站的每一页,解析HTML并提取图片URL,然后调用 download 函数下载图片。

  4. 循环获取网页: 代码使用 for 循环遍历指定范围内的页面,并使用 requests.get 获取网页内容。

  5. 解析HTML: 代码使用 BeautifulSoup 解析HTML,并使用 findfind_all 方法提取图片标签。

  6. 下载图片: 代码使用 for 循环遍历提取到的图片URL,并调用 download 函数下载图片。

  7. 文件保存路径: 代码将图片保存到名为 'img1' 的文件夹中。

注意:

  • 此代码仅供学习参考,请勿用于任何违法或侵犯版权的行为。
  • 代码中的网站地址和图片下载路径需要根据实际情况进行调整。
  • 代码中使用了 User-Agent 来模拟浏览器访问,避免被网站识别为爬虫。
  • 代码中使用了 gbk 编码解码网页内容,请根据实际情况进行调整。
  • 代码中使用 os.makedirs 创建文件夹,确保文件夹存在。
  • 代码中使用 with open 打开文件,确保文件操作完成后自动关闭文件。

其他相关内容:

  • 了解如何使用其他爬虫库,例如 Scrapy。
  • 了解如何使用代理服务器来隐藏自己的IP地址。
  • 了解如何处理网站的反爬虫机制。
  • 了解如何使用数据库保存下载的图片信息。

希望这篇文章能够帮助你更好地理解 Python 爬虫的实现原理。

Python爬虫:使用requests和BeautifulSoup库下载图片

原文地址: http://www.cveoy.top/t/topic/fR7r 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录