当前位置 博文首页 > Aaron_Yang:BeautifulSoup案例2——抓取优美图库

    Aaron_Yang:BeautifulSoup案例2——抓取优美图库

    作者:[db:作者] 时间:2021-07-17 15:48

    总体思路:

    ????网站地址:https://www.umei.net/bizhitupian/weimeibizhi/

    在这里插入图片描述
    ?????注意我选中的这个区域, 我们想要的图片就在这里. 但是, 绝对不是现在你看到的样子。为什么呢? 不够高清大图~

    ?????真正的高清大图在子页面中, 比如, 我点击第?个图片

    在这里插入图片描述
    ????我需要在网站的首页中, 找到子页面的链接, 然后请求到子页面,才能看到这张大图~
    ????也就是说, 想要下载该网站图片(高清大图), 需要三步,
    ????第?步, 在主页面中拿到每?个图片的子页面链接
    ????第二步, 在子页面中找到真正的图片下载地址
    ????第三步, 下载图片

    代码:

    # 1.拿到主页面的源代码,然后提取到子页面的链接,href
    # 2.通过href拿到子页面的内容,从子页面找到图片的下载地址    img->src
    # 3.下载图片
    import requests
    from bs4 import BeautifulSoup
    import time
    
    url = "https://www.umei.net/bizhitupian/weimeibizhi/"
    resp = requests.get(url)
    resp.encoding="utf-8"
    # print(resp.text)
    # 把源代码交给bs
    main_page = BeautifulSoup(resp.text,"html.parser")
    alist = main_page.find("div",class_="TypeList").find_all("a")     # 把范围第一次缩小
    # print(alist)
    for a in alist:
        href = "https://www.umei.net"+a.get('href')    # 直接通过get就可以拿到属性的值  第一步完成
        # 拿到子页面的源代码
        child_page_resp = requests.get(href)
        child_page_resp.encoding = 'utf-8'
        child_page_text = child_page_resp.text
        # 从子页面中拿到图片的下载路径
        child_page = BeautifulSoup(child_page_text,"html.parser")
        p = child_page.find("p",align="center")     # p标签
        img = p.find("img") # img标签
        src = img.get("src")
        # print(src)
        # 下载图片
        img_resp = requests.get(src)
        # img_resp.content    # 这里拿到的字节
        img_name = src.split("/")[-1]   # 拿到url中的最后一个/以后的内容
        with open("img/"+img_name,mode="wb") as f:
            f.write(img_resp.content)   # 图片内容写入文件
    
        print("over! ",img_name)
        time.sleep(1)
    
    f.close()
    resp.close()
    

    运行结果:

    在这里插入图片描述

    cs