asyncio/aiohttp 异步爬取douban
来源:互联网 发布:php 执行cmd命令 编辑:程序博客网 时间:2024/06/07 23:41
import aiohttpimport asyncioimport async_timeoutfrom bs4 import BeautifulSoup#信号量,控制协程数,防止爬的过快sema = asyncio.Semaphore(3)#解析html,获取小说书名async def parse_html(text): soup = BeautifulSoup(text, 'lxml') items = soup.select('.subject-list .subject-item .info') titles = [item.find('a')['title'] for item in items] print(titles)#获取html页面async def get_html(url): async with aiohttp.ClientSession() as sess: with async_timeout.timeout(10):#设置请求的最长时间为10s async with sess.get(url, proxy="http://54.222.232.0:3128") as res: text = await res.text() return textasync def crawl_douban(url): with(await sema): text = await get_html(url) await parse_html(text)def crawl(): # 豆瓣小说首页 start_url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4' tasks = [crawl_douban(start_url)] # 第2到20页的url,加入到tasks中 for i in range(1, 20): url = '{}?start={}&type=T'.format(start_url, i * 20) tasks.append(crawl_douban(url)) loop = asyncio.get_event_loop() #loop.run_until_complete(asyncio.gather(*tasks)) loop.run_until_complete(asyncio.wait(tasks)) loop.close()if __name__ == '__main__': crawl()
阅读全文
0 0
- asyncio/aiohttp 异步爬取douban
- python的异步IO(asyncio aiohttp)
- 使用 aiohttp 和 asyncio 进行异步请求
- aiohttp,asyncio, RunTimeError
- Grequests VS aiohttp+asyncio
- asyncio/aiohttp 的协程爬虫
- 使用python-aiohttp爬取网易云音乐
- 使用python-aiohttp爬取今日头条
- 【asyncio】python异步IO
- 【Python】asyncio异步爬虫
- aiohttp
- aiohttp
- aiohttp
- 爬取博客详细页面的标题(python3.5以上,async/await,aiohttp)
- asyncio
- asyncio
- asyncio
- 15.2 asyncio--异步I/O事件库
- 【云星数据---大数据部集群署系列010】:alluxio命令行操作概览
- 关于Nginx与Apache共存的解决方法
- java 多线程Condition接口的使用
- XlistView基础运用(下拉刷新,上拉加载,listview优化)
- FPGA实验一——项目创建、编译和下载
- asyncio/aiohttp 异步爬取douban
- 双11的凌晨_如何证明你是一只程序猿?
- ALTER TABLE
- vs2013+WDK8.1+WinDbg调试驱动开发环境配置(多帖子整理,水原创)
- 双十一,我的购物清单
- CSS3中的过渡
- 阿里云RDS for SQL Server使用的一些最佳实践
- final修饰符的应用
- <物联网> Android Things 树莓派烧录镜像指南