使用Python爬取小姐姐图片(beautifulsoup法)


Posted in Python onFebruary 11, 2021

Python有许多强大的库用于爬虫,如beautifulsoup、requests等,本文将以网站https://www.xiurenji.cc/XiuRen/为例(慎点!!),讲解网络爬取图片的一般步骤。
为什么选择这个网站?其实与网站的内容无关。主要有两项技术层面的原因:①该网站的页面构造较有规律,适合新手对爬虫的技巧加强认识。②该网站没有反爬虫机制,可以放心使用爬虫。

第三方库需求

  •  beautifulsoup
  • requests

 步骤

打开网站,点击不同的页面:
发现其首页是https://www.xiurenji.cc/XiuRen/,而第二页是https://www.xiurenji.cc/XiuRen/index2.html,第三页第四页以此类推。为了爬虫代码的普适性,我们不妨从第二页以后进行构造url。

使用Python爬取小姐姐图片(beautifulsoup法)

选中封面图片,点击检查:

使用Python爬取小姐姐图片(beautifulsoup法)

可以发现,图片的信息,都在'div',class_='dan'里,而链接又在a标签下的href里。据此我们可以写一段代码提取出每一个封面图片的url:

def getFirstPage(page):
  url='https://www.xiurenji.cc/XiuRen/index'+str(page)+'.html'#获得网站每一个首页的网址
  res=requests.get(url)#发送请求
  res.encoding="gbk"#设置编码方式为gbk
  html=res.text
  soup=BeautifulSoup(html,features='lxml')
  lists=soup.find_all('div',class_='dan')#找到储存每一个封面图片的标签值
  urls=[]
  for item in lists:
   url1=item.find('a').get('href')#寻找每一个封面对应的网址
   urls.append('https://www.xiurenji.cc'+url1)#在列表的尾部添加一个元素,达到扩充列表的目的,注意要把网址扩充完整
  return urls#返回该主页每一个封面对应的网址

点击封面图片,打开不同的页面,可以发现,首页的网址是https://www.xiurenji.cc/XiuRen/xxxx.html,而第二页的网址是https://www.xiurenji.cc/XiuRen/xxxx_1.html,第三第四页同理。同样为了普适性,我们从第二页开始爬取。

使用Python爬取小姐姐图片(beautifulsoup法)

右键,点击“检查”:

使用Python爬取小姐姐图片(beautifulsoup法)

可以发现所有的图片信息都储存在'div',class_='img'中,链接、标题分别在img标签中的srcalt中,我们同样也可以将它们提取出来。

def getFirstPage(page):
  url='https://www.xiurenji.cc/XiuRen/index'+str(page)+'.html'#获得网站每一个首页的网址
  res=requests.get(url)#发送请求
  res.encoding="gbk"#设置编码方式为gbk
  html=res.text
  soup=BeautifulSoup(html,features='lxml')
  lists=soup.find_all('div',class_='dan')#找到储存每一个封面图片的标签值
  urls=[]
  for item in lists:
   url1=item.find('a').get('href')#寻找每一个封面对应的网址
   urls.append('https://www.xiurenji.cc'+url1)#在列表的尾部添加一个元素,达到扩充列表的目的,注意要把网址扩充完整
  return urls#返回该主页每一个封面对应的网址

完整代码

import requests
from bs4 import BeautifulSoup

def getFirstPage(page):
  url='https://www.xiurenji.cc/XiuRen/index'+str(page)+'.html'#获得网站每一个首页的网址
  res=requests.get(url)#发送请求
  res.encoding="gbk"#设置编码方式为gbk
  html=res.text
  soup=BeautifulSoup(html,features='lxml')
  lists=soup.find_all('div',class_='dan')#找到储存每一个封面图片的标签值
  urls=[]
  for item in lists:
   url1=item.find('a').get('href')#寻找每一个封面对应的网址
   urls.append('https://www.xiurenji.cc'+url1)#在列表的尾部添加一个元素,达到扩充列表的目的,注意要把网址扩充完整
  return urls#返回该主页每一个封面对应的网址

def download(urls):
 for url1 in urls:
  print("prepare to download pictures in "+url1)
  getEveryPage(url1)#下载页面内的图片
  print("all pictures in "+url1+"are downloaded")
  
def getEveryPage(url1):
 total=0#total的作用:对属于每一个封面内的图片一次编号
 for n in range (1,11):#每一个封面对应下载10张图,可自行调整
  temp=url1.replace('.html','')
  url2=temp+'_'+str(n)+'.html'#获得每一内部页面的网址
  res=requests.get(url2)
  res.encoding="gbk"
  html=res.text
  soup=BeautifulSoup(html,features='lxml')
  lists1=soup.find_all('div',class_='img')#储存图片的路径
  
  for item in lists1:
   url=item.find('img').get('src')
   title=item.find('img').get('alt')#获取图片及其标题
   picurl='https://www.xiurenji.cc'+url#获取完整的图片标题
   picture=requests.get(picurl).content#下载图片
   address='D:\pythonimages'+'\\'#自定义保存图片的路径
   with open(address+title+str(total)+'.jpg','wb') as file:#保存图片
    print("downloading"+title+str(total))
    total=total+1
    file.write(picture)
    

if __name__ == "__main__":
 page=int(input('input the page you want:'))
 urls=getFirstPage(page)
 download(urls)

本文仅供学习参考,切勿用作其他用途!

到此这篇关于Python爬取小姐姐图片(beautifulsoup法)的文章就介绍到这了,更多相关Python爬取小姐姐图片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python与Redis的连接教程
Apr 22 Python
django2 快速安装指南分享
Jan 05 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
python中spy++的使用超详细教程
Jan 29 Python
Python之Sklearn使用入门教程
Feb 19 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 Python
详解python日志输出使用配置文件格式
Feb 10 #Python
python 获取域名到期时间的方法步骤
Feb 10 #Python
Numpy ndarray 多维数组对象的使用
Feb 10 #Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 #Python
python利用文件时间批量重命名照片和视频
Feb 09 #Python
python opencv实现图像配准与比较
Feb 09 #Python
python urllib和urllib3知识点总结
Feb 08 #Python
You might like
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
python基于http下载视频或音频
2018/06/20 Python
Python中反射和描述器总结
2018/09/23 Python
python实现贪吃蛇小游戏
2020/03/21 Python
python中import与from方法总结(推荐)
2019/03/21 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
上班上网检讨书
2014/01/29 职场文书
公益广告语集锦
2014/03/13 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
小学入学感言
2015/08/01 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
小学生教师节广播稿
2015/08/19 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
详解Redis基本命令与使用场景
2021/06/01 Redis
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js