小言_互联网的博客

最新 用Python 批量爬取网上图片

264人阅读  评论(0)

标题 最新 用Python 批量爬取网上美眉图片

故事是这样的:七月份给室友说,我要开始学习Python了。室友一脸懵,并问我Python是啥?确实对于我这个小城市来说Python之风还没有吹到我们这里来,以至于在我们大学都没有开设这门课!很是尴尬。要不是在网上听说Python很牛我也不会接触到。于是我便给室友说了Python的强大,可是我却遭到了室友的嘲笑。呜呜呜……。“士可杀不可辱。”我立下豪言壮志说:“三个月后我给你做出一个能批量获取网上你最爱图片的程序,给你瞅瞅!”。于是……

当然,关于这方面博客上面有很多例子,但我读了之后发现不是怎么会,不太易懂。在这里我以小白的身份写下了这篇博客,希望可以帮到更多的小白!(毕竟不能丢了咱Python的脸,哈哈哈。)

我目前自学了:Python基础知识,Python爬虫知识(仅限requests库、os库、BeautifulSoup库、re库、正则表达式)
好啦,不废话了,咱们开始!

import requests
from bs4 import BeautifulSoup
import traceback
import re
import os
import time
#我是新手,先定义的主函数,这样我的头脑清晰一些!
def main():
    A_url = "http://www.win4000.com/meinvtag2.html"
    B_url = ""
    lsM = []  #用来储存目录网址链接的呦!
    lsZ = []  #用来储存每张图片连接的呦!
    getMULIANJIE(lsM,A_url)
    for i in lsM:
        for k in range(20):   #这里我大概看了一下每一个母相册后面的子照片都没有超过20个的,所以用的20!
            if k == 0:
                B_url = "http://www.win4000.com/mein" + i + ".html"
            else:
                B_url = "http://www.win4000.com/mein" + i + "_" + str(k) + ".html"
            getPHOTO(B_url,lsZ)
            for j in lsZ:
                for m in j:
                    downPHOTO(m)

#解析网页
def getHTMLText(url):
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

#获取网页链接目录
def getMULIANJIE(ls,url):
    html = getHTMLText(url)
    soup = BeautifulSoup(html,'html.parser')
    a = soup.find_all('a')
    for i in a:
        try:
            href = i.attrs['href']
            ls.append(re.findall(r"[meinv]\d{6}",href)[0])
        except:
            continue
        
#获取照片链接
def getPHOTO(urlb,ls):
    ls.clear()
    html = getHTMLText(urlb)
    ls.append(re.findall('url="(.*?)"',html))


#下载图片
def downPHOTO(url):
    root = "D://tupian//"
    path = root + url.split('/')[-1]
    try:
        if not os.path.exists(root):
            os.mkdir(root)
        if not os.path.exists(path):
            r = requests.get(url)
            with open(path,'wb') as f:
                f.write(r.content)
                f.close()
                print("文件保存成功!")
        else:
            print("文件已经存在!")
    except:
        print("爬取失败!")
    time.sleep(0)

main()



好啦!一切大功告成,我可以去我室友哪里显摆了!
其实我的代码还可以简写很多的,可是我觉得这样的话小萌新更容易理解!
Python是真的强大,我要继续学习了。

人生苦短,我学Python!


转载:https://blog.csdn.net/qq_42874244/article/details/82855171
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场