爬虫程序,从图片网站或者贴吧爬取图片(含代码)

本文介绍了一种使用Python脚本从特定网站批量下载图片的方法,包括煎蛋网和百度贴吧。脚本通过发送HTTP请求获取网页内容,解析HTML以提取图片链接,并下载保存到本地指定文件夹。

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

github地址:https://github.com/531126085/Web-spider
download——mm是从煎蛋网上批量下载图片到自己新建的一个xxoo的文件夹下

import urllib.request
import os

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')
    response = urllib.request.urlopen(url)
    html = response.read()
    return html

def get_page(url):
    html = url_open(url).decode('utf-8')

    a = html.find('current-comment-page') + 23
    b = html.find(']',a)

    return html[a:b]
 

def find_imgs(url):
    html = url_open(url).decode('utf-8') 
    img_addrs = []

    a = html.find('img src=')
    while a!=-1:
        b = html.find('.jpg',a, a+255)

        if b != -1:
            img_addrs.append('http:'+html[a+9:b+4])
        else:
            b = a+9
        a = html.find('img src=',b)
    return img_addrs
    
def save_imgs(folder,img_addrs):
    for each in img_addrs:
        filename = each.split('/')[-1]
        with open(filename,'wb') as f:
            img = url_open(each)
            f.write(img)

def download_mm(folder='ooxx',pages=10):
    os.mkdir(folder)
    os.chdir(folder)

    url = "http://jandan.net/ooxx/"
    page_num =int(get_page(url))
    for i in range(pages):
        page_num -= i
        page_url = url + 'page-' + str(page_num) + '#comments'
        img_addrs = find_imgs(page_url)
        save_imgs(folder,img_addrs)


if __name__=='__main__':
    download_mm()

在这里插入图片描述
download——quanyou是从权力的游戏贴吧上下载图片到当前的工作目录

import urllib.request
import re

def open_url(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')
    page = urllib.request.urlopen(req)
    html = page.read().decode('utf-8')

    return html

def get_img(html):
    p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'#采用正则表达式查找图片的地址
    imglist = re.findall(p,html)          #findall函数,如果正则表达式里有带()的,则查找到之后会将括号的里面的信息返回给imglist
    
    for each in imglist:
        print(each)
    
    for each in imglist:
        filename = each.split("/")[-1]
        urllib.request.urlretrieve(each,filename,None)
        

if __name__=='__main__':
    url = "http://tieba.baidu.com/p/6093575289?pid=125013245611&cid=0#125013245611"
    get_img(open_url(url))

在这里插入图片描述

### 使用Python编写的爬虫程序示例以从网站图片 编写一个能够从网站上抓图片的Python爬虫涉及多个方面,包括发送HTTP请求、解析HTML文档以及下载文件。下面是一个基于`requests`库和`BeautifulSoup`库的例子[^1]: ```python import os import requests from bs4 import BeautifulSoup def download_image(url, folder_path): try: response = requests.get(url) if not os.path.exists(folder_path): os.makedirs(folder_path) file_name = url.split("/")[-1] image_path = f"{folder_path}/{file_name}" with open(image_path, 'wb') as img_file: img_file.write(response.content) print(f"Downloaded {file_name}") except Exception as e: print(e) def fetch_images_from_page(page_url, folder_path="images"): page_response = requests.get(page_url) soup = BeautifulSoup(page_response.text, "html.parser") images = [] for img_tag in soup.find_all('img'): src = img_tag.get('src') alt_text = img_tag.get('alt', '') images.append((src, alt_text)) for (image_url, _) in images: full_image_url = image_url.startswith('http') and image_url or f"https://{page_url}{image_url}" download_image(full_image_url, folder_path=folder_path) if __name__ == "__main__": target_website = input("Enter the URL of website to scrape:") fetch_images_from_page(target_website) ``` 这段代码定义了一个名为`fetch_images_from_page()`函数,该函数接受页面URL作为参数,并尝试从中提所有的图像链接。对于每一个找到的图像链接,调用辅助方法`download_image()`将其保存到本地磁盘。 #### 注意事项 - **合法性**:始终确保拥有合法权限去访问目标站点的数据;尊重robots.txt协议和其他形式的服务条款。 - **性能优化**:当处理大量数据时考虑异步I/O操作或批量请求等方式提高效率。 - **错误处理**:实现健壮的异常捕获机制以便应对网络波动等问题带来的挑战。 - **资源管理**:合理设置并发度避免给服务器造成过大压力;注意控制存储空间消耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值