python爬虫zol图片库

import requests
from lxml import html
import re
from concurrent.futures import ThreadPoolExecutor

etree = html.etree
def get_detail_href(url):
    """
    获取页面图片详情页href
    """
    res =  requests.get(url)
    res.encoding = "gbk"
    detail_href = etree.HTML(res.text)
    #print(detail_href)
    hrefs = detail_href.xpath("//ul[@class='pic-list2 clearfix']/li/a/@href")
    full_href = []
    for href in hrefs:
        href = url + href
        full_href.append(href)
    return full_href

def get_image_url(href):
    """
    这里是获取详情页图片下载地址
    """
    res = requests.get(href)
    res.encoding = "gbk"
    obj = re.compile(r"nowPicSrc.*?:(?P<imgsrc>.*?),",re.S)
    #提取页面中的图片src
    pic_src = obj.search(res.text).group("imgsrc")
    return pic_src

def download_pic(pic_url):
    """
    这里是下载具体图片
    """
    pic_name = pic_url.split("/")[-1].strip('"')
    pic_url = pic_url.replace('"','')
    print(pic_url)
    res = requests.get(pic_url)
    print(f"开始下载{pic_name}!!!")
    with open(f"image/{pic_name}","wb") as f:
        f.write(res.content)
        print(f"{pic_name}下载完成!!!")

def main(url):
    """
    主程序入口
    """
    #1. 这个是获取图片详情页
    print("开始抓取主页图片的详情页面url")
    full_href = get_detail_href(url)
    pic_detail_src_lists = []

    #2. 这个是获取详情页里面的图片url,用于图片下载
    for href in full_href:
        pic_detail_src_list = get_image_url(href)
        pic_detail_src_lists.append(pic_detail_src_list)
    print("抓取主页详情页url完成!!!")


    #3. 依据步骤2获取到的pic url下载pic
    print("进入详情页pic 下载")
    with ThreadPoolExecutor(5) as t:
        for pic_url in pic_detail_src_lists:#pic_url为具体图片下载url
            t.submit(download_pic,pic_url)
    print("下载over!!!")




if __name__ == '__main__':
    url = "https://desk.zol.com.cn"
    main(url)
版权声明:本文内容由互联网用户撰写,该文观点仅代表作者本人。本站爱分享仅提供分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请立马联系本站,本站将立刻删除。
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭