使用python爬虫爬取豆瓣网页图片并下载

目录

 1. 导入必要的库

 2. 定义下载图片的函数

 3. 定义爬取豆瓣页面图片的函数

4. 使用函数爬取图片

 注意事项:


下面是一个简单的Python爬虫教程,用于爬取豆瓣网页上的图片并下载。这个教程将使用Python的`requests`库来发送网络请求,以及`BeautifulSoup`库来解析HTML页面。请确保你已经安装了这些库,如果没有,可以使用`pip`来安装:

pip install requests beautifulsoup4

 1. 导入必要的库

import requests
import urllib3
from bs4 import BeautifulSoup
import re

 2. 定义下载图片的函数

def download_image(image_url, folder):
    # 发送GET请求,获取图片内容
    response = requests.get(image_url)
    if response.status_code == 200:
        # 以二进制方式打开文件
        with open(folder + '/' + image_url.split('/')[-1], 'wb') as file:
            file.write(response.content)
        print(f"图片已下载:{image_url}")
    else:
        print(f"图片下载失败:{image_url}")

 3. 定义爬取豆瓣页面图片的函数

def scrape_douban_images(url):
    # 发送GET请求,获取页面内容
    response = requests.get(url)
    if response.status_code == 200:
        # 使用BeautifulSoup解析HTML
        soup = BeautifulSoup(response.text, 'html.parser')
        # 找到所有的图片标签
        images = soup.find_all('img')
        # 创建存储图片的文件夹
        if not os.path.exists('douban_images'):
            os.makedirs('douban_images')
        # 遍历所有图片标签
        for image in images:
            # 获取图片的URL
            image_url = image.get('src')
            if image_url:
                # 下载图片
                download_image(image_url, 'douban_images')
    else:
        print(f"页面请求失败:{url}")

4. 使用函数爬取图片

# 豆瓣页面的URL
douban_url = 'https://www.douban.com/some_page'  # 请替换为实际的豆瓣页面URL
# 爬取并下载图片
scrape_douban_images(douban_url)


 

 注意事项:

1. 遵守法律和网站规定:在爬取网站数据时,请确保遵守相关法律法规和网站的爬虫政策。不要对网站造成过大压力,合理设置请求间隔。
2. User-Agent:有些网站会检查请求的User-Agent,如果没有合适的User-Agent,请求可能会被拒绝。可以在`requests.get`中添加headers参数来设置User-Agent。
3. 异常处理:在实际使用中,你可能需要添加更多的异常处理逻辑,比如处理网络请求失败、解析错误等情况。
4. 图片URL:豆瓣的图片URL可能包含防盗链机制,直接访问图片URL可能无法下载图片。这种情况下,你可能需要模拟浏览器行为,或者寻找其他方法来获取图片。

这个教程提供了一个基本的框架,你可以根据具体的需求进行调整和扩展。

示例(与教程内的不一致,可以复制直接运行)

import requests
import urllib3
from bs4 import BeautifulSoup
import re
http=urllib3.PoolManager()
url = 'https://www.douban.com/'
response=http.request('GET', url)
response=response.data.decode('utf-8')
print(response)
soup=BeautifulSoup(response,'lxml')
text2=soup.find_all('img')
text3=soup.find_all('div', class_='market-spu-pic')
data=[]
for i in text2:
    j=str(i)
    plink=re.compile(r'<img.*src="(.*?)"')
    dlink=re.findall(plink,j)
    data.append(dlink)
for i in text3:
    j=str(i)
    j=j.replace('(',' ')
    j=j.replace(')', ' ')
    slink = re.compile(r'<div class="market-spu-pic" style="background-image: url(.*?)">')
    qlink = re.findall(slink, j)
    data.append(qlink)
print(data)
n=0
for i in data:
    if i==['https://img1.doubanio.com/f/vendors/a1fdee122b95748d81cee426d717c05b5174fe96/pics/blank.gif'] or i==['/pics/new_menu.gif']:
        del i
        continue
    for j in i:
        img_data=requests.get(j).content
        path=str(n)+'.jpg'
        with open(path, 'wb') as f:
            f.write(img_data)
        n+=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值