'''
  1. 爬取以下站点中各个明星图片,分别单独建文件夹存放。
   起始URL地址:http://www.mm131.com/mingxing
  '''
  import os
  import logging
  import requests
  from bs4 import BeautifulSoup   logging.basicConfig(level=logging.INFO)   def store_girl_img(girl_url, store_girl_dir):
  # 把girl_url的单个小姐姐放入store_girl_dir文件夹
  girl_html = requests.get(girl_url) #访问girl_url网址
  girl_html.encoding = "gbk" #修改编码,不然会是乱码
  girl_text = girl_html.text #获取girl_html的网页内容。girl_html.content返回的是bytes数据   girl_src = BeautifulSoup(girl_text, 'lxml').find("div",class_='content-pic').find('img')['src']
  #BeautifulSoup用lxml库解析girl_html的网页内容,并找到所有class_='content-pic'的div标签
  #再找到img标签下的src属性,得到单张照片的链接
  print(girl_src)   # 此处加headers是为防反爬虫,如果不加会响应403,没有权限
  headers = {
  'Referer': girl_url,
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
  }
  file_name = girl_src.split('/')[-1]
  #将http://img1.mm131.me/pic/2016/1.jpg切片成["http://img1.mm131.me/pic/2016","1.jpg"],[-1]就是去第二个1.jpg
  file_name = os.path.join(store_girl_dir, file_name) #在store_girl_dir目录下创建图片名字file_name,如1.jpg
  with open(file_name, 'wb') as f: #二进制模式打开file_name
  girl_content = requests.get(girl_src, headers=headers).content # .content获取图片的二进制数据
  f.write(girl_content) #写入到file_name   def store_page_grils(href, store_girl_dir):
  # 把href这个链接下的小姐姐们(多个)放入文件夹store_girl_dir
  girl_text = requests.get(href).text #访问某个美女的图片页面
  soup = BeautifulSoup(girl_text, 'lxml') #获得BeautifulSoup对象
  # 获取美女图片的张数
  max_page_num = soup.find('div', class_='content-page').find_all('a')[-2].get_text()
  #找到class_='content-page'的div标签---->找出该div下所有的a标签,得到一个a标签列表
  #[-2]取出倒数第二个按标签,get_text()是获取文本内容
  max_page_num = int(max_page_num) #文本内容转化为整数   girl_url_list = [href] #定义一个列表,存放一个美女所有图片的链接,页面特殊,href表示第一张
  #for循环获取第二张到最后一张的链接
  for page_num in range(2, max_page_num + 1):   girl_url = str(href).replace(".html",f"_{page_num}.html") # 将.html替换_{page_num}.html
  # print(girl_url)
  girl_url_list.append(girl_url) #将第二张到最后一张的链接追加到girl_url_list
  # print(girl_url_list)
  for girl_url in girl_url_list:
  store_girl_img(girl_url, store_girl_dir) #循环调用store_girl_img函数   def main():
  url = 'http://www.mm131.com/mingxing'
  store_dir = 'meizitu' #主目录
  os.makedirs(store_dir, exist_ok=True) #创建主目录,若主目录存在不报错
  home_html = requests.get(url) #访问http://www.mm131.com/mingxing
  home_html.encoding = "gbk"
  home_text = home_html.text #获取网页内容
  # 得到小姐姐们的链接标签
  ahref_list = BeautifulSoup(home_text, 'lxml').find("div",class_="main").find_all('a')[2:22]
  #找到所有a标签,得到一个a标签列表,[2:22]表示:取a标签列表的第2到21个,因为前两个是不需要的
  # print(ahref_list)
  for ahref in ahref_list: #遍历这20个a标签
  # ahref 是bs4.element.Tag实例
  girlname = ahref.get_text() # 获取a标签的文本内容,作为存放小姐姐图片的子目录
  href = ahref['href']# 取出a标签的href属性,得到一个小姐姐图片的链接
  store_girl_dir = os.path.join(store_dir, girlname) # 拼接得到放该小姐的房间号,即存放美女的文件夹
  os.makedirs(store_girl_dir, exist_ok=True)
  logging.info(f'开始下载{girlname}的图片')
  store_page_grils(href, store_girl_dir)   if __name__ == '__main__':
  main()

爬虫mm131明星照片的更多相关文章

  1. Python网络爬虫实战(三)照片定位与B站弹幕

    之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了. 这篇实战包含两个内容. * 利用爬虫调用Api来解析照片的拍摄位置 * 利用爬虫爬取Bilibili视频中的 ...

  2. 牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息

  3. 让你从零开始学会写爬虫的5个教程(Python)

    写爬虫总是非常吸引IT学习者,毕竟光听起来就很酷炫极客,我也知道很多人学完基础知识之后,第一个项目开发就是自己写一个爬虫玩玩. 其实懂了之后,写个爬虫脚本是很简单的,但是对于新手来说却并不是那么容易. ...

  4. [转]让你从零开始学会写爬虫的5个教程(Python)

    让你从零开始学会写爬虫的5个教程(Python)   写爬虫总是非常吸引IT学习者,毕竟光听起来就很酷炫极客,我也知道很多人学完基础知识之后,第一个项目开发就是自己写一个爬虫玩玩. 其实懂了之后,写个 ...

  5. 用python批量下载图片

    一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...

  6. 阿里巴巴直播内容风险防控中的AI力量

    直播作为近来新兴的互动形态和今年阿里巴巴双十一的一大亮点,其内容风险监控是一个全新的课题,技术的挑战非常大,管控难点主要包括业界缺乏成熟方案和标准.主播行为.直播内容不可控.峰值期间数千路高并发处理. ...

  7. 结合NGUI做的手机拍照(可自定义相框)

    原地址:http://www.unity蛮牛.com/thread-18220-1-1.html 在次此之前我们先要了解一下下面的我要讲的几个内容: 一.为什么要用NGUI,因为NGUI的可以做屏幕自 ...

  8. 设计模式之第18章-观察者模式(Java实现)

    设计模式之第18章-观察者模式(Java实现) 话说曾小贤,也就是陈赫这些天有些火,那么这些明星最怕的,同样最喜欢的是什么呢?没错,就是狗仔队.英文的名字比较有意思,是paparazzo,这一说法据说 ...

  9. AI新生代“教父”崛起,或成就迈向具有类人意识机器的一大步

    <麻省理工科技评论>公布了 2018 年全球十大突破性技术,“对抗性神经网络”即“生成对抗网络”作为突破性人工智能技术赫然上榜.这家全球最顶级科技杂志编辑部对这项革命性技术给出的评价是:它 ...

随机推荐

  1. Linux-C实现GPRS模块发送短信

    “GSM模块,是将GSM射频芯片.基带处理芯片.存储器.功放器件等集成在一块线路板上,具有独立的操作系统.GSM射频处理.基带处理并提供标准接口的功能模块.GSM模块根据其提供的数据传输速率又可以分为 ...

  2. php的opcache缓存扩展

    opcache (全程 zend opcache): 从php5.5开始,默认提供的php脚本缓存扩展,编译php5.5时加上参数--enable-opcache就可以编译opcache了,只是要启用 ...

  3. 微信小游戏的本地缓存和清除的使用 (text.js image.js file-util.js)

    参考: 微信小游戏,文件系统 UpdateManager-小游戏 一.Egret提供的本地缓存工具类( 备注:新版本进行了修改,并增加了sound.js等) 在微信小游戏项目中,Egret提供了fil ...

  4. 【译】python configparser中默认值的设定

    在做某一个项目时,在读配置文件中,当出现配置文件中没有对应项目时,如果要设置默认值,以前的做法是如下的: try: apple = config.get(section, 'apple') excep ...

  5. smarty模板的内置函数

    内置函数参考:http://www.php100.com/manual/smarty/language.builtin.functions.html 主要就是 foreach 和 if elseif ...

  6. genieacs Installation on Ubuntu14.04

    Beside the installation guide on the main page, here is a guide to install GenieACS off a freshly in ...

  7. Redis一次数据丢失

    一台Redis服务器,4核,16G内存且没有任何硬件上的问题.持续高压运行了大约3个月,保存了大约14G的数据,设置了比较完备的Save参数.而就是这台主机,在一次重起之后,丢失了大量的数据,14G的 ...

  8. PHP链接MySQL,查询数据库内容,删除数据库内容。。。记住链接公式!!!

    //扩展类叫MySQLi MySQL是数据库,MySQLi是扩展 Id地址本地网络服务器的地址localhost 如果想链接别人的输入他的服务器id地址. //root代表的是数据库名, //poss ...

  9. POJ3628:Bookshelf 2【01背包】

    Description Farmer John recently bought another bookshelf for the cow library, but the shelf is gett ...

  10. asp.net 访问页面访问统计实现 for iis7

    上一篇博文中< asp.net 访问页面访问统计实现  > 中在win10 (iis8+)上运行没有问题, 但客户机子是windows server 2008  的 iis7弄死不对,最好 ...