知识点:

多线程的实现图片的下载及写入字符串高级查找了解动态加载和jsonrequest 的用法
获取数据的api'https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=1000'图片路径 "path": "https://b-ssl.duitang.com/uploads/item/201509/18/20150918195615_JfdKm.jpeg"
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: benjaminYangimport requests,threading
import urllib.parse#设置最大线程 开启30个线程就锁住
thread_lock=threading.BoundedSemaphore(value=50)'https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=1000'
#通过url 获取数据
def get_page(url):#requests.get 自带了json.loadspage=requests.get(url)page=page.content# 将bytes转成 字符串page=page.decode('utf-8')return pagedef pages_from_duitang(label):pages=[]url='https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={}&limt=1000'#将中文转成url编码label=urllib.parse.quote(label)#0-3600 步长100for index in range(0,3600,50):#将这两个变量替换占位符{}u=url.format(label,index)page=get_page(u)pages.append(page)return pages# print(get_page('https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=1000'))# 单个页面的对象,startpart 所要匹配字符1,匹配的字符2
def findall_in_page(page,startpart,endpart):all_strings=[]end=0# -1代表找不到 意思就是匹配到就执行循环while page.find(startpart,end) !=-1:#匹配第一个字符,从下标0开始匹配到的位置下标,并将字符长短传给start变量start=page.find(startpart,end)+len(startpart)# 将从第一个需要匹配的字符串后面的字符开始,匹配第二个需要匹配的字符出现的位置,并将这个下标值赋给end变量end=page.find(endpart,start)#切片 取两个所要匹配字符 之间的部分也就是图片urlstring=page[start:end]#存入列表
        all_strings.append(string)return all_strings# "path": "https://b-ssl.duitang.com/uploads/item/201708/20/20170820215827_fa483.jpeg"
def pic_urls_from_pages(pages):pic_urls=[]for page in pages:urls=findall_in_page(page,'path":"','"')pic_urls.extend(urls) # 合并列表return pic_urlsdef download_pics(url,n):r=requests.get(url)path='pics/'+ str(n) + '.jpg'with open(path,'wb') as f:f.write(r.content)#下载完了,解锁
    thread_lock.release()def main(label):pages=pages_from_duitang(label)pic_urls=pic_urls_from_pages(pages)n=0for url in pic_urls:n +=1print('正在下载第{}张图片'.format(n))#上锁
        thread_lock.acquire()#下载 这个方法丢进线程池t=threading.Thread(target=download_pics,args=(url,n))t.start()main('校花')

此学习资源来自--潭州Python学院

转载于:https://www.cnblogs.com/benjamin77/p/7966346.html

爬虫练习3 爬取堆糖网校花照片相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 爬取推糖网图片小案例

    前言: 好久没有更新博文了,因为工作的关系,一直没有更新博文,今天有空,就给大家带来一个爬图片的小案例.今天的目标网站就是堆糖网,关于爬取这个网站图片的案例,肯定大家都看到很多,基本都是通过搜索图片的 ...

  8. 爬虫之selenium爬取斗鱼网站

    爬虫之selenium爬取斗鱼网站 示例代码: from selenium import webdriver import timeclass Douyu(object):def __init__(s ...

  9. python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

最新文章

  1. 调试Linux内核操作指南(withing kgdb)
  2. 八骏登场 学子圆梦 一卷在手 良师益友(2)
  3. odoo定时发送邮件
  4. 贴花纸怎么贴_木纹纸怎么贴? 贴木纹纸的方法与详细步骤
  5. linux怎么修改sftp默认端口,转:linux 修改sftp服务默认提供者sshd的session timeout
  6. 【连载】如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(4)
  7. mybatisplus 操作另一个数据库的数据_实例分析:python操作数据库项目
  8. hwclock(Linux)
  9. JAVA版的IntHashMap的多个源码
  10. Linux 内核与模块调试
  11. 期货资管系统-分仓系统-反向跟单系统
  12. 一句话告诉你为什么有些jQuery插件会有特殊字符(加号、减号、感叹号等)
  13. 快速美化多页PPT的3个技巧
  14. 图书速读 | 一分钟读完《斯坦福高效睡眠法》
  15. 创造一颗属于你的星球
  16. spssfisher判别分析步骤_spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解...
  17. Light Emitting Hindenburg 解题思路
  18. numpy 归一化 与 标准化
  19. SGX初始化中ELF文件解析
  20. 3点内容介绍什么是物联网模组

热门文章

  1. 直播短视频带货完美运营APP源码 购物直播交友系统源码
  2. 《程序员》Part5 2009-2013年试题知识点汇总
  3. linux下批量更改一个目下的目录和文件的权限
  4. Topcoder 2016 TCO Algorithm Algo Semifinal 2 Hard
  5. Super Ugly Number
  6. 哪些seo搜索技巧你不会用?
  7. SEO词汇表:您应该知道的180多个术语和定义
  8. 【转】我的辛酸奋斗史3/3
  9. LOFTER72D94FF8E0603DBE38066DB525285F1C
  10. 内存和CPU匹配方法详解