文章目录

  • 一.准备工作
  • 二.具体分析
  • 三.具体步骤
    • (1)将HTML文本提取出来
    • (2)第一步解析获得各个图集网址
    • (3)第二步解析获得图集中每张图片所在页面网址
    • (4)第三步解析获得每张图片网址
    • (5)下载图片
  • 四.完整代码

我们的目的,IU那么漂亮,爬!

最近刷dy突然看到了好几张IU的高清壁纸,我直接马上换成手机壁纸,今天就来网上爬虫下载一些IU的高清大图,冲冲冲!
有图为证:


一.准备工作

准备一些必要的库:

import requests
from bs4 import BeautifulSoup
import os

网址:

https://www.tt98.com/tag/IU/index.html

二.具体分析

首先我们来看看这个网页的组成,我们发现网页中所有的图片并不在同一个页面中,它分为很多图集,你需要单独点进去然后再一张一张切换。

所以我们需要通过主页面网址找到每个图集的网址,然后根据每个图集的网址找到每个图集里面每张图片的网址

打开主页面网址以后直接点F12打开开发者界面。如下图所示:

可以看到每个图集的网址存放在<div class = "listbox">...</div>下行的a标签的href中。

点入图集可以发现每张图片的网址极其具有规律,它们前边的部分是一样的,后面按0-9的顺序排了下去(有n张图片就是从0-n-1):

分析了网址的结构以后我们就可以开始爬取图片了!

三.具体步骤


完整代码在最后面!


(1)将HTML文本提取出来

def getHtmlText(url):#url为需要提取的网址try:r = requests.get(url)r.raise_for_status()r.encoding = r.apparent_encoding#返回HTML文本内容return r.textexcept:return "爬取失败!"

(2)第一步解析获得各个图集网址

def fillUnivList1(html,ulist):#html为上一步获得的HTML文本内容,ulist列表存放每个图集的网址soup = BeautifulSoup(html,'html.parser')photos = soup.find_all('div',{'class':'listbox'})for photo in photos:photo_link = photo.aulist.append(photo_link['href'])

结果如下(需要自己加https://www.tt98.com进行拼接得到完整图集网址):

['/sjbz/61712.html', '/sjbz/61079.html', '/sjbz/59095.html', '/sjbz/57353.html', '/sjbz/57251.html', '/sjbz/57039.html', '/sjbz/56597.html', '/sjbz/56449.html', '/sjbz/55059.html', '/sjbz/50945.html', '/sjbz/50742.html', '/sjbz/50655.html', '/sjbz/50209.html', '/sjbz/49132.html', '/sjbz/47552.html', '/sjbz/47400.html', '/sjbz/47184.html', '/sjbz/41297.html', '/sjbz/41247.html', '/sjbz/39317.html']

(3)第二步解析获得图集中每张图片所在页面网址


这里由于界面内容有js编写,无法直接提取网址,所以我根据规律发现每个图集中每张页面的网址与图集中网址有一定联系,来构造页面网址。

比如说:第一个图集页面网址为https://www.tt98.com/sjbz/61712.html,而该图集中每张图片所在网址依次为https://www.tt98.com/showinfo-3-61712-0.htmlhttps://www.tt98.com/showinfo-3-61712-1.html…所以我们只要知道有几张图片并且将图集网址中数字提取出来就可以构建所有页面的网址。


#提取出每个图集的图片个数
def fillUnivList2(html):soup = BeautifulSoup(html,'html.parser')photo = soup.find('a',{'class':'photo-a'})return photo['zong']
#构建每个页面的网址
aim = url1+'/showinfo-3-'+match.group(0)+'-'+str(j)+'.html'

部分页面网址截图如下:

(4)第三步解析获得每张图片网址

def fillUnivList3(html):soup = BeautifulSoup(html,'html.parser')photo = soup.find('a',{'class':'photo-a'})return photo.find('img').attrs['src']

部分图片网址截图如下:

(5)下载图片

def saveFig(target):root = 'D://爬虫图片//'path = root+target.split('/')[-1]try:if not os.path.exists(root):os.mkdir(root)if not os.path.exists(path):r = requests.get(target)with open(path,'wb') as f:f.write(r.content)f.close()else:print("该文件已存在")except:print("爬取失败")

上截图:

四.完整代码

import requests
from bs4 import BeautifulSoup
import osdef getHtmlText(url):try:r = requests.get(url)r.raise_for_status()#调整编码方式,使这正常显示r.encoding = r.apparent_encodingreturn r.textexcept:return "爬取失败!"def fillUnivList1(html,ulist):soup = BeautifulSoup(html,'html.parser')photos = soup.find_all('div',{'class':'listbox'})for photo in photos:photo_link = photo.aulist.append(photo_link['href'])def fillUnivList2(html):soup = BeautifulSoup(html,'html.parser')photo = soup.find('a',{'class':'photo-a'})#‘zong’属性中存放每个图集的图片个数return photo['zong']def fillUnivList3(html):soup = BeautifulSoup(html,'html.parser')photo = soup.find('a',{'class':'photo-a'})return photo.find('img').attrs['src']def saveFig(target):#存储路径root = 'D://爬虫图片//'path = root+target.split('/')[-1]try:if not os.path.exists(root):os.mkdir(root)if not os.path.exists(path):r = requests.get(target)with open(path,'wb') as f:f.write(r.content)f.close()else:print("该文件已存在")except:print("爬取失败")if __name__ == '__main__':#存放每个图集网址ulist = []url = "https://www.tt98.com/tag/IU/index.html"html = getHtmlText(url)fillUnivList1(html,ulist)url1 = 'https://www.tt98.com'for i in ulist:#正则表达式匹配网址中的数字match = re.search(r'\d{5}',i)url2 = url1+ihtml2=getHtmlText(url2)#num为每个图集中图片的个数num = fillUnivList2(html2)for j in range(int(num)):#生成每张图片页面网址aim = url1+'/showinfo-3-'+match.group(0)+'-'+str(j)+'.html'html3 = getHtmlText(aim)#target为每张图片的链接target = fillUnivList3(html3)#保存图片saveFig(target)

【Python爬虫实战】爬取IU高清大图相关推荐

  1. python爬虫----图片爬取之高清原图

    这次又来爬取图片啦,不过这次爬的是原图 大概的思路和上一篇差不多,不同的是不同的网站有不同的反爬策略 爬取的网站是:https://www.pexels.com/ 1.源码分析 进入网站后会出现一个图 ...

  2. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  3. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  4. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  5. python爬虫实战---爬取大众点评评论

    python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  6. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  7. python利用bs4爬取外国高清图片网站

    python利用bs4爬取外国高清图片网站 爬取高清图片 爬取高清图片 import re import requests from bs4 import BeautifulSoup import o ...

  8. 全网最细------爬取4k高清大图

    本次案例将教大家免费爬取4k高清大图,即使你是爬虫新手,也可以食用本次文章实现你的免费下载梦,话不多说,先看效果 网站视图: 看到这些图片你是否怦然心动,跟着我一起看下去. 一.思路分析 首先最基本的 ...

  9. Python 网络爬虫:爬取4K高清美图

    爬取4K高清美图 这篇爬虫主要是用来爬取网站高清4K图片,这也是笔者学初学爬虫的时候最先写一个的爬虫脚本,现在回过头来重新梳理一下,也算是对从前知识的一个总结,希望对大家有所帮助! 文章目录 爬取4K ...

最新文章

  1. IOS使用通知回调方法
  2. c#开发中程序集调用时容易忽略的问题
  3. Yii2的MVC新特性
  4. 有限元笔记05——板单元(4节点12自由度)和壳单元(4节点24自由度)
  5. 美式英语中 [d] 的特别发音
  6. grunt入门 出处:http://artwl.cnblogs.com
  7. 企业级实战01_ActiveMQ 下载、安装、运行、实战需求
  8. Java获取数据类型
  9. postgresql 9.1 下的 pg_dump 的初步研究
  10. jackson set properties to default value (取消让jackson 赋予默认值)
  11. css background-image显示全部_CSS 与网络性能,看了都说好
  12. Java中级面试题及答案(120道Java中级面试题大汇总)
  13. 快速fcm matlab,Matlab中的FCM算法代码及中文详解
  14. 一加8T安装的EdXposed插件导致手机无限重启的解决办法
  15. 全国366个市县日度空气质量数据(2016-2020年)(AQI,SO2,NO2,PM2.5,PM10)
  16. 什么是分布式数据存储
  17. 经验分享:Flutter尽然还能有这种操作!赶紧收藏备战金三银四!
  18. 树莓派4B运行SPI提速(MIT 机械狗程序)
  19. 游戏经济系统——体系设计002
  20. CSS基础:简述CSS盒模型

热门文章

  1. URP——着色器和材质——灯光着色器 Lit
  2. C++程序设计原理与实践 习题答案 第九章 第9章习题答案
  3. (四)万能的搜索 —— 1. 深度优先搜索
  4. 访问我在BLOGBUS的博客吧
  5. java 管理 程序设计_用java编程设置管理的用户登录
  6. 内部总线、系统总线、外部总线
  7. SuperMap iClient for JavaScript常见问题解答集锦(十二)
  8. win10的IE闪退及“启用或关闭windows功能”里没有IE选项
  9. ipad已停用恢复系统 2种方法
  10. 《智力是什么》读书笔记