Python爬取美女图片 爬虫基础

  • 简述
  • 实现思路
  • 关键代码
    • 文件下载
    • 爬虫代码
  • 成果
  • 更新

简述

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

实现思路

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

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

关键代码

文件下载

import requests
import 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 = 0count_tmp = 0time1 = 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 * 100speed = (count - count_tmp) / 1024 / 1024 / 2count_tmp = countprint(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 : PyCharm
from bs4 import BeautifulSoup  # 网页解析
import xlwt  # excel操作
import sqlite3  # 数据库操作
from api import spider2 as spider
import time
from api import FileDownload as fd
import 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])))

成果

展示几张照片吧


更新

解析网页的封装类

#-*- codeing = utf-8 -*-
#@Time : 2021/3/1 16:16
#@Author : xiaow
#@File : spider2.py
#@Software : PyCharmimport re  # 正则表达式
import sys
import urllib.request, urllib.error  # 指定url,获取网页数据
from bs4 import BeautifulSoup  # 网页解析
import xlwt  # excel操作
import sqlite3  # 数据库操作baseurl = 'https://movie.douban.com/top250?start='imglink = re.compile(r'<a href=".*?" title=".*?">', re.S)# titlelink = re.compile(r'<span class="title">(.*)</span>')
# findlink = re.compile(r'<a href="(.*?)">')  # 创建正则表达式 表示规则# 1.爬取网页
def getData(url):urllist = []valuelist = []# 2.解析数据img = []src = []title = []for i in range(0, 10):url = baseurl + str(i * 25)html = askURL(url)bs = BeautifulSoup(html, "html.parser")print(bs)# urllist.append(bs.a.attrs["href"])# valuelist.append(bs.a.string)# return urllist, valuelistfor item in bs.find_all('div', class_="item"):  # 查找div 并且该div应满足class=item# print(item)item = str(item)# titlel = re.findall(titlelink, item)# title.append(titlel)# srcl = re.findall(findlink, item)  # 正则表达式进行筛选# for s in srcl:#     src.append(s)imgl = re.findall(imglink, item)  # 正则表达式进行筛选for i in imgl:img.append(i)return title, img, src;# 得到一个url的网页内容1
def askURL(url):head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36","Cookie": '_ga=GA1.2.1191993538.1623990557; _gid=GA1.2.176559558.1623990557; HstCfa3699098=1623990557028; HstCmu3699098=1623990557028; HstCnv3699098=1; HstCns3699098=1; newurl=0; __dtsu=10401623990557D693AE61F09F524965; pbnfgecookieinforecord=%2C64-32128%2C64-32129%2C; HstCla3699098=1623991353818; HstPn3699098=7; HstPt3699098=7'}req = urllib.request.Request(url=url, headers=head)html = ""try:response = urllib.request.urlopen(req)html = response.read()except Exception as result:print(result)return html# 3.保存数据
def savaData(savepath):pass

Python爬取美女图片 爬虫基础相关推荐

  1. python爬取美女图片的练习

    python 爬取美女图片的练习 主要使用 xpath 定位获取 图片的链接 本次练习使用到os库 ,lmxl库 , requests库 import requests from lxml impor ...

  2. 【爬虫实战】手把手教你使用python爬取美女图片

    本文目录 写作缘起 上代码 思路分析 效果展示 写在最后 写作缘起 用python爬虫实现的图片资源下载器,一页页下载图片过于缓慢,当我们要欣赏一些好看的图片时一页页翻太复杂了,干脆写一个图片下载器 ...

  3. Python爬取网站图片(爬虫入门demo)

    代码功能: 爬取网站的教师图片,在用户主机上创建好PNG文件夹保存共110张图片,同时把每张图片的老师介绍内容写入H3.txt文件中. 实现思路: 打开该网页后用F12查看网页的html原代码,发现图 ...

  4. 宅男福利 用Python爬取美女图片

    嘿嘿 召唤老色批 今天带大家爬去一下美女的图片 用的是requests和xpath去解析 获取网页和解析网页的函数 def get_tag(response,tag):html=etree.HTML( ...

  5. 用python爬取美女图片

    import urllib.request import os for i in range(2000, 2400): if not os.path.exists('tupian/' + str(i) ...

  6. Scrapy爬取美女图片续集 (原创)

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...

  7. Scrapy爬取美女图片续集

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...

  8. 使用Python爬取网页图片

    使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给 ...

  9. 利用python爬取网页图片

    学习python爬取网页图片的时候,可以通过这个工具去批量下载你想要的图片 开始正题: 我从尤物网去爬取我喜欢的女神的写真照,我们这里主要用到的就两个模块 re和urllib模块,有的时候可能会用到t ...

  10. Python爬取bing图片

    我之前写过一篇Python爬取百度图片,有兴趣的朋友可以去读一下,这次写的是爬取Bing的图片. 打开Bing图片,搜索关键词,开始分析页面,可以发现bing和百度一样都是下滑自动加载,百度默认一次加 ...

最新文章

  1. Webhooks上的一个简单方法:恐吓现在停止
  2. MPB:深大李猛组-基于PacBio SMRT三代测序的红树林沉积物真菌群落的研究
  3. 大规模分布式消息中间件考虑点
  4. 《php入门很简单,PHP入门速成(1)
  5. P4768 [NOI2018] 归程 Kruskal重构树 + 倍增 + 最短路
  6. android studio创建构造方法,使用Android studio创建你的第一个项目
  7. pycharm定时运行python脚本_Python脚本用于定时关闭网易云音乐PC客户端
  8. win10 安装oracle11g R2的64位版本
  9. java项目总结范文_java项目收获总结(20200505185659)
  10. Sketch 67.2 简体中文版 最佳Mac产品原型设计工具
  11. 【信号与系统】z变换
  12. 面试简历上的项目经验
  13. 知其然,知其所以然!
  14. 2020年内蒙古自治区第十五届大学生程序设计竞赛榜单
  15. 9.2 iptables主机防火墙
  16. 怎么打开.pos文件
  17. 黑科技智能家电新生儿“智能冰箱”
  18. Unity实现可调子屏幕(类小地图)效果
  19. 单例模式及单例类的两种实现
  20. 数学物理方法·基础⑦基本初等复变函数的计算公式/方法

热门文章

  1. cad化气路图_气路图符号大全
  2. 正逻辑与负逻辑的关系
  3. 朗文3000词汇表带音标_牛津3000词汇表
  4. 用蒙特卡洛仿真估计π的值
  5. WPS表格 JSA 学习笔记 - 实现贪吃蛇
  6. 数据库实验四 视图实验
  7. Verilog语法误区总结
  8. zuc算法代码详解_ZUC算法-信息安全工程师知识点
  9. 树的递归思维:自顶向下、自底向上
  10. 电力拖动自动控制系统_教授为你解读“电气工程及其自动化”专业类