蜂鸟网图片–简介
今天玩点新鲜的,使用一个新库 aiohttp
,利用它提高咱爬虫的爬取速度。
安装模块常规套路
pip install aiohttp
运行之后等待,安装完毕,想要深造,那么官方文档必备 :https://aiohttp.readthedocs.io/en/stable/
接下来就可以开始写代码了。
我们要爬取的页面,这一次选取的是
http://bbs.fengniao.com/forum/forum_101_1_lastpost.html
打开页面,我们很容易就获取到了页码
[外链图片转存失败(img-va2BvAy3-1563802645097)(//upload-images.jianshu.io/upload_images/12778909-6e86a98bd0559fe9?imageMogr2/auto-orient/strip|imageView2/2/w/1000/format/webp)]
好久没有这么方便的看到页码了。
尝试用 aiohttp
访问这个页面吧,模块的引入,没有什么特殊的,采用 import
即可
如果我们需要 使用Asyncio + Aiohttp
异步IO 编写爬虫,那么需要注意,你需要异步的方法前面加上async
接下来,先尝试去获取一下上面那个地址的网页源码。
代码中,先声明一个fetch_img_url的函数,同时携带一个参数,这个参数也可以直接写死。
with
上下文不在提示,自行搜索相关资料即可 (`・ω・´)
aiohttp.ClientSession() as session:
创建一个session
对象,然后用该session
对象去打开网页。session
可以进行多项操作,比如post
, get
, put
等
代码中 await response.text()
等待网页数据返回
asyncio.get_event_loop
创建线程,run_until_complete
方法负责安排执行 tasks
中的任务。tasks
可以为单独的函数,也可以是列表。
import aiohttp
import asyncio
async def fetch_img_url(num):
url = f'http://bbs.fengniao.com/forum/forum_101_{num}_lastpost.html' # 字符串拼接
# 或者直接写成 url = 'http://bbs.fengniao.com/forum/forum_101_1_lastpost.html&