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

 更新时间:2021年02月11日 08:10:03   作者:割韭菜的喵酱  
这篇文章主要介绍了Python爬取小姐姐图片(beautifulsoup法),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

第三方库需求

  •  beautifulsoup
  • requests

 步骤

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

在这里插入图片描述

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

在这里插入图片描述

可以发现,图片的信息,都在'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,第三第四页同理。同样为了普适性,我们从第二页开始爬取。

在这里插入图片描述

右键,点击“检查”:

在这里插入图片描述

可以发现所有的图片信息都储存在'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浅析守护线程与非守护线程的区别与使用

    守护线程,又称后台线程,它是在后台运行的,如果所有前台线程都死亡,那么后台线程就会自动死亡,本章我们来了解守护线程与非守护线程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-08-08
  • python中使用websocket方法实例详解

    python中使用websocket方法实例详解

    WebSocket是一种网络通信协议,它在单个TCP连接上提供全双工的通信信道,本文我们将探讨如何在Python中使用WebSocket实现实时通信,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Python requests模块实例用法

    Python requests模块实例用法

    在本篇文章中小编给大家分享了关于Python requests模块实例用法,有需要的朋友们学习参考下。
    2019-02-02
  • linux查找当前python解释器的位置方法

    linux查找当前python解释器的位置方法

    今天小编就为大家分享一篇linux查找当前python解释器的位置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • django 类视图的使用方法详解

    django 类视图的使用方法详解

    这篇文章主要介绍了django 类视图的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python 判断是否为正小数和正整数的实例

    python 判断是否为正小数和正整数的实例

    这篇文章主要介绍了python 判断是否为正小数和正整数的实例的相关资料,这里提供实例,实例注释说明很清楚,需要的朋友可以参考下
    2017-07-07
  • Python通过递归遍历出集合中所有元素的方法

    Python通过递归遍历出集合中所有元素的方法

    这篇文章主要介绍了Python通过递归遍历出集合中所有元素的方法,实例分析了Python遍历集合元素的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • kaggle数据分析家庭电力消耗过程详解

    kaggle数据分析家庭电力消耗过程详解

    这篇文章主要为大家介绍了kaggle数据分析家庭电力消耗示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Python list和str互转的实现示例

    Python list和str互转的实现示例

    这篇文章主要介绍了Python list和str互转的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python 第三方opencv库实现图像分割处理

    Python 第三方opencv库实现图像分割处理

    这篇文章主要介绍了Python 第三方opencv库实现图像分割处理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06

最新评论