高清美图python全爬下(超详细步骤)

python网络爬虫(批量爬取网页图片),主要使用requests库和BeautifulSoup库,没有的请先去安装。

接下来我会完整地分析整个爬取的过程,本次以http://www.netbian.com/该网站为例,网站页面如下:

首先我们分析一下爬取的过程,先看第一张图片

查看网页代码(F12):

可以发现该图片链接的地址,点击该图片进入以下界面:

找到图片的下载地址,点击进入可以找到分辨率最大的原图,如下红圈圈出的便是我们要找到的最终下载图片的地址:

代码及说明如下:
 

#1.导入requests和BeautifulSoup库
import requests
from bs4 import BeautifulSoup

#2.设置爬取下来图片的存储位置,找到图片的下载地址
root = "D://p_images//"   #存放路径
n = 1                     #标记
for i in range(1,4):      #网站翻页

#因为我爬取的网站翻页后的网址格式不同,因此需要分以下两种情况
    mainPage = f'http://www.netbian.com/index_{i}.htm' #主网页
    if i == 1:
        mainPage = f'http://www.netbian.com/index.htm' #主网页
    r = requests.get(mainPage)                         #爬取网页信息
    src = r.text                                       
    soup = BeautifulSoup(src,'html.parser')

#这里要注意的是,因为python中有class这个关键字,所以不能直接用class,要用class_
    soup_new = soup.find('div',class_='list')          #找到class=list的div标签
    for li in soup_new.find_all('li'):                 #查看图片
        flag = li.find_all('div')                      #判断li标签下是否有div标签

#有div标签的话说明不是我们想要的,直接跳过(具体情况要视网站而定,此情况仅适用于该网站)
        #print(flag)
        if flag:
            continue                                   
#获取第一个跳转页面地址
        page = f"http://www.netbian.com{li.a['href']}"  #获取第一个跳转页面的地址 
        #print(f"page:{li.a['href']}")
        #print(f"http://www.netbian.com{li.a['href']}")
        r1 = requests.get(page)                         #获取网页信息
        src1 = r1.text
        soup1 = BeautifulSoup(src1,'html.parser')
        soup_newd = soup1.find('div',class_='pic')      #找到该网页class为pic的div标签
        for p in soup_newd.find_all('p'):               #找到最大分辨率的图片
            #print(f"http://www.netbian.com{a['href']}")
            #print(f"downpage:{p.a['href']}")
            downPage = f"http://www.netbian.com{p.a['href']}"  #获取图片下载地址
            r2 = requests.get(downPage)
            src2 = r2.text
            soup2 = BeautifulSoup(src2,'html.parser')
            soup_d = soup2.find('table',id='endimg')      #找到id为endimg的table标签
            for td in soup_d.find_all('tr'):              #下载图片
                imageUrl = f"{td.a['href']}"
                print(f"正在下载:{imageUrl.split('/')[-1]}")
                r3 = requests.get(imageUrl)
                image = r3.content                        #以2进制形式保存图片信息
                with open(root+imageUrl.split('/')[-1],'wb') as f:  #打开文件夹
                    f.write(image)                                  #保存图片
                    print("已下载"+str(n)+"张图片")
                    n += 1                                          #标记

爬取结果:

 

高清美图python全爬下(超详细步骤)_第1张图片

高清美图python全爬下(超详细步骤)_第2张图片

写得不对的地方希望大家可以在评论提醒一下,希望可以帮到大家,谢谢!

你可能感兴趣的:(python爬虫)