蜂鸟网图片--啰嗦两句

前几天的教程内容量都比较大,今天写一个相对简单的,爬取的还是蜂鸟,依旧采用aiohttp 希望你喜欢

爬取页面https://tu.fengniao.com/15/ 本篇教程还是基于学习的目的,为啥选择蜂鸟,没办法,我瞎选的。

一顿熟悉的操作之后,我找到了下面的链接

https://tu.fengniao.com/ajax/ajaxTuPicList.php?page=2&tagsId=15&action=getPicLists

这个链接返回的是JSON格式的数据

  1. page =2页码,那么从1开始进行循环就好了
  2. tags=15 标签名称,15是儿童,13是美女,6391是私房照,只能帮助你到这了,毕竟我这是专业博客 ヾ(◍°∇°◍)ノ゙
  3. action=getPicLists接口地址,不变的地方

数据有了,开爬吧

import aiohttp
import asyncio headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
"Accept": "*/*"} async def get_source(url):
print("正在操作:{}".format(url))
conn = aiohttp.TCPConnector(verify_ssl=False) # 防止ssl报错,其中一种写法
async with aiohttp.ClientSession(connector=conn) as session: # 创建session
async with session.get(url, headers=headers, timeout=10) as response: # 获得网络请求
if response.status == 200: # 判断返回的请求码
source = await response.text() # 使用await关键字获取返回结果
print(source)
else:
print("网页访问失败") if __name__=="__main__":
url_format = "https://tu.fengniao.com/ajax/ajaxTuPicList.php?page={}&tagsId=15&action=getPicLists"
full_urllist= [url_format.format(i) for i in range(1,21)]
event_loop = asyncio.get_event_loop() #创建事件循环
tasks = [get_source(url) for url in full_urllist]
results = event_loop.run_until_complete(asyncio.wait(tasks)) #等待任务结束



上述代码在执行过程中发现,顺发了20个请求,这样子很容易就被人家判定为爬虫,可能会被封IP或者账号,我们需要对并发量进行一下控制。

使Semaphore控制同时的并发量

import aiohttp
import asyncio
# 代码在上面
sema = asyncio.Semaphore(3)
async def get_source(url):
# 代码在上面
#######################
# 为避免爬虫一次性请求次数太多,控制一下
async def x_get_source(url):
with(await sema):
await get_source(url) if __name__=="__main__":
url_format = "https://tu.fengniao.com/ajax/ajaxTuPicList.php?page={}&tagsId=15&action=getPicLists"
full_urllist= [url_format.format(i) for i in range(1,21)]
event_loop = asyncio.get_event_loop() #创建事件循环
tasks = [x_get_source(url) for url in full_urllist]
results = event_loop.run_until_complete(asyncio.wait(tasks)) #等待任务结束

走一波代码,出现下面的结果,就可以啦!

在补充上图片下载的代码

import aiohttp
import asyncio import json ## 蜂鸟网图片--代码去上面找
async def get_source(url):
print("正在操作:{}".format(url))
conn = aiohttp.TCPConnector(verify_ssl=False) # 防止ssl报错,其中一种写法
async with aiohttp.ClientSession(connector=conn) as session: # 创建session
async with session.get(url, headers=headers, timeout=10) as response: # 获得网络请求
if response.status == 200: # 判断返回的请求码
source = await response.text() # 使用await关键字获取返回结果
############################################################
data = json.loads(source)
photos = data["photos"]["photo"]
for p in photos:
img = p["src"].split('?')[0]
try:
async with session.get(img, headers=headers) as img_res:
imgcode = await img_res.read()
with open("photos/{}".format(img.split('/')[-1]), 'wb') as f:
f.write(imgcode)
f.close()
except Exception as e:
print(e)
############################################################
else:
print("网页访问失败") # 为避免爬虫一次性请求次数太多,控制一下
async def x_get_source(url):
with(await sema):
await get_source(url) if __name__=="__main__":
#### 代码去上面找

图片下载成功,一个小爬虫,我们又写完了,美滋滋

github代码地址

Python爬虫入门教程 8-100 蜂鸟网图片爬取之三的更多相关文章

  1. Python爬虫入门教程:豆瓣Top电影爬取

        基本开发环境 Python 3.6 Pycharm 相关模块的使用 requests parsel csv 安装Python并添加到环境变量,pip安装需要的相关模块即可. 爬虫基本思路 一. ...

  2. Python爬虫入门教程 2-100 妹子图网站爬取

    妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...

  3. Python爬虫入门教程 29-100 手机APP数据抓取 pyspider

    1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...

  4. Python爬虫入门教程 16-100 500px摄影师社区抓取摄影师数据

    写在前面 今天要抓取的网站为 https://500px.me/ ,这是一个摄影社区,在一个摄影社区里面本来应该爬取的是图片信息,可是我发现好像也没啥有意思的,忽然觉得爬取一下这个网站的摄影师更好玩一 ...

  5. Python爬虫入门教程 28-100 虎嗅网文章数据抓取 pyspider

    1. 虎嗅网文章数据----写在前面 今天继续使用pyspider爬取数据,很不幸,虎嗅资讯网被我选中了,网址为 https://www.huxiu.com/ 爬的就是它的资讯频道,本文章仅供学习交流 ...

  6. Python爬虫入门教程 17-100 CSD*博客抓取数据

    写在前面 写了一段时间的博客了,忽然间忘记了,其实CSD*博客频道的博客也是可以抓取的,所以我干了..... 其实这事情挺简单的,打开CSDN博客首页,他不是有个最新文章么,这个里面都是最新发布的文章 ...

  7. Python爬虫入门教程 33-100 电影评论数据抓取 scrapy

    1. 海王评论数据爬取前分析 海王上映了,然后口碑炸了,对咱来说,多了一个可爬可分析的电影,美哉~ 摘录一个评论 零点场刚看完,温导的电影一直很不错,无论是速7,电锯惊魂还是招魂都很棒.打斗和音效方面 ...

  8. Python爬虫入门教程 48-100 使用mitmdump抓取手机惠农APP-手机APP爬虫部分

    1. 爬取前的分析 mitmdump是mitmproxy的命令行接口,比Fiddler.Charles等工具方便的地方是它可以对接Python脚本. 有了它我们可以不用手动截获和分析HTTP请求和响应 ...

  9. Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分

    1. Python爬虫入门教程 爬取背景 2019年1月10日深夜,打开了百思不得姐APP,想了一下是否可以爬呢?不自觉的安装到了夜神模拟器里面.这个APP还是比较有名和有意思的. 下面是百思不得姐的 ...

随机推荐

  1. Jmeter选项含义

    最近接了组里压测的任务,开始仔细钻研Jmeter了.之前也压过,但每次RD问压测的指标等问题,感觉都很懵不知道该怎么回答.借这个机会一鼓作气搞明白吧! Jmeter安装插件 有个插件叫jp@gc St ...

  2. 1.3 正则表达式和python语言-1.3.8 创建字符集([ ])

    1.3.8 创建字符集([ ]) (2018-05-0815:24:00) 下面的示例将说明对于 r2d2|c3po 的限制将比[cr][23][dp][o2]更为严格 import re # 下面的 ...

  3. Stream闪亮登场

    Stream闪亮登场 一. Stream(流)是什么,干什么 Stream是一类用于替代对集合操作的工具类+Lambda式编程,他可以替代现有的遍历.过滤.求和.求最值.排序.转换等 二. Strea ...

  4. CentOS Linux搭建SVN服务器

    Linux系统:CentOS 安装步骤如下: 1.yum install subversion 2.输入rpm -ql subversion查看安装位置,如下图: 可以看到 svn在bin目录下生成了 ...

  5. [python]numpy.mean()用法

    a=np.array([[[1,1],[2,2],[3,3]],[[4,4],[5,5],[6,6]],[[7,7],[8,8],[9,9]],[[10,10],[11,11],[12,12]]]) ...

  6. 「雅礼集训 2017 Day5」矩阵

    填坑填坑.. 感谢wwt耐心讲解啊.. 如果要看这篇题解建议从上往下读不要跳哦.. 30pts 把$A$和$C$看成$n$个$n$维向量,那$A_i$是否加入到$C_j$中就可以用$B_{i,j}$表 ...

  7. 20181115 python-第一章学习小结part4

    python第一章 流程控制 单分枝任务 If  条件: 满足条件执行动作 注意if下面的缩进,建议直接使用tab键,4个空格太难输入. 双分枝任务 If  条件: 满足条件执行动作 else: 条件 ...

  8. sass快速入门

    sass十分钟入门 变量 sass中可以定义变量,方便统一修改和维护. //sass style //----------------------------------- $fontStack: H ...

  9. MVC5 Razor视图中不规范书写导致的编译问题

    今天碰到一个非常让人难以理解的问题,如图所示,但是我在代码中并没有找到缺失"}"的地方: 根据源文件提示有去 AppData\Local\Temp\Temporary ASP.NE ...

  10. timesten报错:error while loading shared libraries: libaio.so.1: cannot open shared object file : No such file or directory

    我遇到的这个错是因为缺少依赖:libaio 直接yum -y install libaio 然后重新安装就OK了