Python爬虫入门【8】: 蜂鸟网图片爬取之三
蜂鸟网图片–啰嗦两句
前面的教程内容量都比较大,今天写一个相对简单的,爬取的还是蜂鸟,依旧采用aiohttp
希望你喜欢
爬取页面`https://tu.fengniao.com前面程还是基于学习的目的,为啥选择蜂鸟,没办法,我瞎选的。
一顿熟悉的操作之后,我找到了下面的链接
https://tu.fengniao.com/ajax/ajaxTuPicList.php?page=2&tagsId=15&action=getPicLists
这个链接返回的是JSON格式的数据
- page =2页码,那么从1开始进行循环就好了
- tags=15 标签名称,15是儿童,13是美女,6391是私房照,只能帮助你到这了,毕竟我这是
专业博客
ヾ(◍°∇°◍)ノ゙ - action=getPicLists接口地址,不变的地方
数据有了,开爬吧
import aiohttp
import asyncioheaders = {"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: # 创建sessionasync 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)) #等待任务结束
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
上述代码在执行过程中发现,顺发了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 asyncioimport json## 蜂鸟网图片--代码去上面找
async def get_source(url):print("正在操作:{}".format(url))conn = aiohttp.TCPConnector(verify_ssl=False) # 防止ssl报错,其中一种写法async with aiohttp.ClientSession(connector=conn) as session: # 创建sessionasync 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__":#### 代码去上面找
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
图片下载成功,一个小爬虫,我们又写完了,美滋滋
Python爬虫入门【8】: 蜂鸟网图片爬取之三相关推荐
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- python爬虫——百度贴吧图片爬取 小项目
项目目的: 爬取贴吧中所有帖子里面的图片 将爬取到的图片存储到名称为贴吧名称的文件夹中 项目环境 python版本:python3.6 用到的库:requests.etree.unquote 浏览器: ...
- Python爬虫入门之豆瓣短评爬取
采用工具pyCharm,python3,工具的安装在这就不多说了,之所以采用python3是因为python2只更新维护到2020年. 新建python项目 File-Settings-project ...
- python爬虫入门_3种方法爬取古诗文网站
目的: 爬取古诗文网的古诗词,获取详细信息,目标网站:https://www.gushiwen.org/default.aspx?page=1 1.根据网页分析可知 下面包含了当前页面的所有信息,所以 ...
- Python爬虫入门教程06:爬取数据后的词云图制作
前言
- Python爬虫入门教程31:爬取猫咪交易网站数据并作数据分析
前言
- Python爬虫入门教程32:爬取boss直聘招聘数据并做可视化展示
前言
- Python爬虫入门教程27:爬取某电商平台数据内容并做数据可视化
前言
- Python爬虫入门教程30:爬取拉勾网招聘数据信息
前言
- Python爬虫利用18行代码爬取虎牙上百张小姐姐图片
Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...
最新文章
- 深度学习系列学习博客
- 相爱相杀:程序员的数学
- 【转】ssh服务器启动和客户端常用操作
- react-native项目打包速度优化
- Cordova - 彻底搞定IOS编译!
- 分布式系统之消息队列
- CloudIDE插件开发实战:教你如何调试代码
- Python使用turtle绘制阴阳鱼图案
- 2015年传智播客JavaEE 第168期就业班视频教程day38-SSH综合案例-1
- Linux:ubuntu 下安装软件,卸载,查看已经安装的软件
- 每日算法系列【LeetCode 1006】笨阶乘
- 【优化算法】混合增强灰狼优化布谷鸟搜索算法(AGWOCS)【含Matlab源码 1331期】
- 不用找,你想要的餐饮酒店word模板素材都在这里
- 采用泰克示波器TBS2000和TCP0030A电流探头准确评估高速DCDC转换器电感的选择
- Android自动化-双击操作
- java小红球下载_小红球闯关
- CORDIC算法 arctan反正切计算原理及C语言定点实现
- softmax和sigmod的pytorch这些
- Mac 电脑鼠标和触摸板滚动方向不一致的问题
- Days14 ContentProvider ContentResolver
热门文章
- 单点登录SSO:可一键运行的完整代码
- 大数据分析师岗位是青春饭
- cad延伸快捷键_CAD绘图大师都在用的46组快捷键,高效绘图必备
- 昭阳K43/E43系列网卡功能相关说明
- 504 压测geteway_504 Gateway Time-out是怎么回事?
- 行业研究报告-全球与中国白光LED电子皮镜市场现状及未来发展趋势
- Spring Boot + Thymeleaf + Echarts 三维地图展示
- ie不支持includes_IE11 – 对象不支持属性或方法“includes” – javascript window.location.hash...
- mysql中反单引号的作用_mysql中反单引号(`)作用
- 如何查看所使用计算机的配置,电脑配置的三种查看方法 不用借助软件怎么查看电脑配置...