import requests
import urllib.parse
import threading#当线程达到十个时就锁住
thread_lock = threading.BoundedSemaphore(value=10)
#function:获得json数据
#url:api
#page:返回json数据
def get_page(url):#requests.get自带json.load 用于获取 page信息page = requests.get(url)#获取url的内容page = page.content#将字节转换成utf-8格式page = page.decode('utf-8')return page#function:获得所有页面的api
#label为你要搜索的关键字
#获取所有页面pages中的链接
def pages_from_duitang(label):#创建pages 存放获取到的链接并返回pages = []url = "https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={}&limit=1000"for index in range(0,3600,50):#两个变量分别替换两个占位符{}u = url.format(label,index)page = get_page(u)pages.append(page)return pages
#function:获取单个图片地址
#page是从get_page请求回来的页面信息
#startpage是开始匹配的部分
#endpart是字符串末尾匹配的部分
def findall_in_page(page,startpage,endpart):#all_string存放所有的照片地址all_string = []end = 0while page.find(startpage,end)!=-1:#start为字符串开始的地址 ,从第end个字符开始查找,查找到第一个出现startpage的地址赋值给startstart = page.find(startpage,end)+len(startpage)#从字符串第start位置开始查找,查到到第一个endpart字符串的位置end = page.find(endpart,start)#获得从start开始到end为止的字符串 赋值给变量 stringstring = page[start:end]#存入列表中all_string.append(string)return all_string#function:获取所有的图片地址
#pages:从url请求的所有的页面信息
def pic_urls_from_pages(pages):#print("啊哈,请给我一杯忘情水")#创建列表,存放所有的图片地址pic_urls = []#遍历所有的页面信息for page in pages:#获取一个的图片地址 赋值给urlsurls = findall_in_page(page,'path":"','"')#print("urls is the {}".format(urls))#将获取到的单个图片地址添加到列表pic_urls中pic_urls.extend(urls)return pic_urls#function:下载图片并命名
#url:下载图片的地址
#n:照片的名字
def download_pics(url,n):r = requests.get(url)#print("我是r[]",r)#生成图片的相对地址path = 'D:\\CodeProject\\pythonProject\\pics\\' + str(n) + '.jpg'#以可读写的方式打开二进制文件pathwith open(path,'wb') as f:#将r的内容读入到path的文件中f.write(r.content)#下载完毕,解锁thread_lock.release()#funtion:主函数
#label:要爬取的关键字
def main(label):print(label)#将关键字传入pages_from_duitang中,获得对应关键字的所有api 赋值给pagespages = pages_from_duitang(label)#将包含所有的api的pages传入到pic_urls_from_pages中,获得所有的图片地址 赋值给pic_urlspic_urls = pic_urls_from_pages(pages)n = 0#遍历所有的图片地址,传入到下载函数中下载图片for url in pic_urls:#n:待参数1:图片的名称n+=1print("正在下载第{}张图片".format(n))#上锁thread_lock.acquire()#url:待传入的参数2t = threading.Thread(target=download_pics,args=(url,n))t.start()main("帅哥")

Python爬取堆糖帅哥照片相关推荐

  1. 爬虫练习3 爬取堆糖网校花照片

    知识点: 多线程的实现图片的下载及写入字符串高级查找了解动态加载和jsonrequest 的用法 获取数据的api'https://www.duitang.com/napi/blog/list/by_ ...

  2. Java获取游戏头像_java爬取堆糖所有头像(高质量版头像)

    百度贴吧的用户头像爬下来之后,图片经过裁剪,尺寸太小,都是110*110之类的,并且有很多用户被注销后,头像是缩略图重复,所以爬了堆糖里面的头像,堆糖里的头像质量还是蛮高的. 堆糖官网:www.dui ...

  3. 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐

    简单的爬虫入门实战 最近刚学了python的爬虫,刚好可以用来爬取漂亮的图片作为壁纸,网上美图网站有很多,比如:花瓣,堆糖.它们请求图片数据的方式差不多类似,都是通过用户不断下滑加载新的图片,这种请求 ...

  4. 爬取堆糖蜜桃猫图片并下载到本地

    爬去蜜桃猫 大家可以打开堆糖网,不需要登录,然后搜索蜜桃猫,就会发现许多可爱的蜜桃猫和他的小对象,我们这次的任务就是要爬取蜜桃猫的日常生活.下面是爬取的代码,我们先提取了每个图片的链接,然后进行了下载 ...

  5. 2019年脱单攻略|用Python爬取世纪佳缘美女照片,实现颜值评分

    "关爱单身程序猿,人人有责" 周末,程序员小明一大早给我发来消息说想找一个女朋友. | 数据探索 于是.... 我登陆了他的账号,摸索着浏览了这个网站 我准备把符合条件的小姐姐的头 ...

  6. 爬虫小项目(四)利用多进程和ajax技术爬取堆糖

    这次主要讲一下怎么分析ajax请求来获得我们想要的数据,在通过多进程进行抓取,当然这次的目的主要是这两个,所以最后的结果是以打印在控制台为主. 那么让我们开始这一次的爬虫之旅 我们先进入堆糖网,这次我 ...

  7. python3 爬虫日记(三) 爬取堆糖动态加载网页

    1.分析:进入堆糖网后我们在分类找到插画绘画进入这个分类后发现好多图片,下拉后发现会有不断的图片刷新出来,这就是堆糖采用了动态加载网页. 2.用开发者工具(F12)分析:按一下F12,找到networ ...

  8. python3网络爬虫:爬取堆糖照片

    首先对页面进行点击分析,查看如片,分析url. # -*- coding: utf-8 -*-import requests import threading import urllib.parse# ...

  9. Python爬虫 | 爬取高质量小姐姐照片

    Python爬虫 | 爬取高质量小姐姐照片 1.数据来源分析 2.获取author_id_list和img_id 3.制作detial 4.制作detial_list 5.数据保存 6.批量获取 7. ...

  10. 使用Python爬取马蜂窝网站的游记和照片

    使用Python爬取马蜂窝网站的游记和照片 特殊原因需要在马蜂窝上爬取一些游记和照片作为后续分析处理的数据,参考网上一些类似的爬虫文章,自己尝试了一下,这次爬取的是马蜂窝上所有有关苏州的游记(包括游记 ...

最新文章

  1. 阿里巴巴人工智能实验室“黄”了
  2. codeforces#254DIV2解题报告
  3. Android Studio升级后报 method not found: 'runProguard'的错误
  4. C++ STL 中提供的算法
  5. iMac 是什么?苹果2021新款 iMac 购买建议
  6. 针织erp_编程源于我们长期的针织工作
  7. 支付机构备付金管理过程
  8. Centos7 kvm环境制作qcow2 格式镜像
  9. 腾讯大牛给予Java初学者的学习建议
  10. Consul 集群单节点与多节点
  11. python下载某网站收费文档(一)——配合fiddler半自动版
  12. 这五大采购流程最需要实现自动化
  13. ansible之block用法
  14. 全职高手手游服务器维护,《全职高手》停服停运公告!
  15. VMware XP虚拟机使用主机socks5代理全局代理连接
  16. angular4项目启动步骤
  17. 计算机排版自然段视频教程,视频画面排版方法
  18. 远程控制任我行的使用
  19. 域名备案与空间备案有什么关系吗,域名备案又是怎么回事?
  20. python剪切视频与合并视频

热门文章

  1. Python中sep是函数吗?该怎么使用?
  2. Python爬虫从入门到精通:(6)数据解析2_使用bs4(BeautifulSoup)_Python涛哥
  3. linux没法上网,LINUX没法上网?
  4. 测斜原始数据处理工具
  5. [印刷工艺]从正度纸,大度纸说起
  6. CentOS 7.6基于lvm2快照备份恢复MariaDB
  7. 建设工程项目全寿命周期管理是指_建设工程全寿命周期的概述
  8. 国家公祭日(国家哀悼日)将网站改成悼念灰黑色的方法
  9. unity漂移 unity3d教程 // WheelCollider
  10. Ubuntu安装eog遇到的坑及解决方案