import requests
from bs4 import BeautifulSoup
import os

def download(url):
    res = requests.get(url)
    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):  # 获取第519到529页的图片
        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:
            html = res.text
            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用于解析HTML,以及os用于文件操作。

  2. 定义下载函数: download(url) 函数接收一个图片URL,使用requests.get获取图片数据,并将其保存在名为'img1'的文件夹中,文件名与图片URL的最后一个部分一致。

  3. 定义获取HTML函数: get_html() 函数循环遍历网页列表,获取每个网页的HTML内容,并使用BeautifulSoup解析HTML。

  4. 解析HTML: soup.find(class_='list')找到包含图片列表的元素,all_imgs = all_list.find_all('img')获取所有图片标签。

  5. 下载图片: 遍历所有图片标签,提取图片URL,并使用download(src)函数下载图片到本地。

  6. 主程序: if __name__ == '__main__': 部分调用get_html()函数,开始执行爬取图片操作。

运行结果:

执行代码后,会在当前目录下生成一个名为'img1'的文件夹,其中包含从目标网站下载的图片。

需要注意的是:

  • 网站的结构和图片URL可能会随着时间的推移而发生变化,你需要根据网站的实际情况修改代码。
  • 爬取网站数据时,请遵守网站的robots.txt协议,不要对网站造成过大的压力。
  • 爬虫程序仅用于学习和研究目的,请勿用于任何违法活动。

希望这份代码和解释可以帮助你理解如何使用Python爬取图片。

Python爬虫:使用requests和BeautifulSoup从网站下载图片

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

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