Python爬取美女图片 爬虫基础

Python爬取美女图片 爬虫基础,第1张

概述简述作为一个考研狗,每天除了日复一日的复习外,偶尔也想给自己寻找一些生活的小乐趣,今天突然想到了自己曾经稍微接触的爬虫,想看看可以爬取些图片放到电脑上,就花了些时间改了改之前的爬虫代码,爬取了一部分照片先量一下战绩吧。照片不多但也算是自己的一次爬虫小经验。     简述

作为一个考研狗,每天除了日复一日的复习外,偶尔也想给自己寻找一些生活的小乐趣,今天突然想到了自己曾经稍微接触的爬虫,想看看可以爬取些图片放到电脑上,就花了些时间改了改之前的爬虫代码,爬取了一部分照片先量一下战绩吧。照片不多但也算是自己的一次爬虫小经验。

 

 

 

 

实现思路

爬虫的网页很简单,照片真实路径都在页面中直接可以拿到
主要流程就是先进入照片浏览的主页,每个照片的主页都会链接几个照片页面,像下面这样,每个图片都会链接一个网页

 

图片链接的网页如下图所示

 

 

 但是这个页面显示的图片还是不够高清,这个网站有一个规律,更高清的照片存放的网页就在现在这个页面的路径后跟一个 -1920x1080 的htm中,进入这个htm之后展示的照片才是我们要的,拿到图片的url就直接下载就好,就这样一直循环,所有的照片就都下载下来了。

关键代码文件下载
import requestsimport timedef downloadfile(name, url):    try:        headers = {'Proxy-Connection': 'keep-alive'}        r = requests.get(url, stream=True, headers=headers)        print("=========================")        print(r)        length = float(r.headers['Content-length'])        f = open(name, 'wb')        count = 0        count_tmp = 0        time1 = time.time()        for chunk in r.iter_content(chunk_size=512):            if chunk:                f.write(chunk)  # 写入文件                count += len(chunk)  # 累加长度                # 计算时间 两秒打印一次                if time.time() - time1 > 2:                    p = count / length * 100                    speed = (count - count_tmp) / 1024 / 1024 / 2                    count_tmp = count                    print(name + ': ' + formatfloat(p) + '%' + ' Speed: ' + formatfloat(speed) + 'M/S')                    time1 = time.time()        f.close()        return 1;    except:        print("出现异常")        return 0;def formatfloat(num):    return '{:.2f}'.format(num)if __name__ == '__main__':    downloadfile('D://file//photo//hd.jpg',                 'https://browser9.qhimg.com/bdr/__85/t01753453b660de14e9.jpg')
爬虫代码
# -*- codeing = utf-8 -*-# @Time : 2021/6/19 23:01# @Author : xiaow# @file : PhotoSpIDer.py# @Software : PyCharmfrom bs4 import BeautifulSoup  # 网页解析import xlwt  # excel *** 作import sqlite3  # 数据库 *** 作from API import spIDer2 as spIDerimport timefrom API import fileDownload as fdimport re  # 正则表达式imglink = re.compile(r'<a href="(.*?)" target="_blank" title=".*?"><img alt=".*?" src=".*?"/><b>.*?</b></a>', re.S)img2link = re.compile(r'<a href="(.*?)" target="_blank">.*?<span>(1680x1050)</span></a>', re.S)img3link = re.compile(r'<img alt=".*?" src="(.*?)" title=".*?"/>', re.S)# 获取照片页面路径def getPhoto(url):    srcs = []    HTML = spIDer.askURL(url);    bs = BeautifulSoup(HTML, "HTML.parser");    for item in bs.find_all('a', target="_blank"):        item = str(item)        src = re.findall(imglink, item)        if (len(src) != 0):            srcs.append("http://www.netbian.com" + src[0])    return srcs;# 照片主页显示的照片不够清楚,这里根据这个网站存储照片的规律,拼接了一个地址,这个地址的照片比较高清一些def getPhotoUrl(url):    purls = [];    url3 = "http://www";    url2 = url.split(".")    for j in range(1, len(url2)):        if j == len(url2) - 2:            url3 = url3 + "." + url2[j] + "-1920x1080"        else:            url3 = url3 + "." + url2[j]    return (url3)# 下载照片def downloadPhoto(url):    HTML = spIDer.askURL(url);    bs = BeautifulSoup(HTML, "HTML.parser");    for item in bs.find_all("img"):        item=str(item)        itemsrc=re.findall(img3link,item)        if(len(itemsrc)!=0):           return itemsrc[0]if __name__ == '__main__':    src = "http://www.netbian.com/mei/index_";    # 拼接照片主页的路径    for i in range(2,163):        time.sleep(5)        src2 = "";        src2=src+str(i)+".htm"        urls=getPhoto(src2)        for j in range(len(urls)):            time.sleep(3)            fd.downloadfile('D://file//photo//hd'+str(time.time())+".jpg",downloadPhoto(getPhotoUrl(urls[j])))
成果

展示几张照片吧

 

 

 

 

 

 有兴趣的可以看下我的csdn原文章 csdn链接

总结

以上是内存溢出为你收集整理的Python爬取美女图片 爬虫基础全部内容,希望文章能够帮你解决Python爬取美女图片 爬虫基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1183620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存