aiohttp的模板
- import aiohttp
- import asyncio
- import async_timeout
- from urllib.parse import urljoin,urldefrag
- root_url = 'http://python/org/' # 开始的url
- crawled_urls,url_hub = [], [root_url]
- headers = {'user-agent': 'Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.2.15 Version/10.10'}
- async def get_body(url):
- async with aiohttp.ClientSession() as session:
- try:
- with async_timeout.timeout(10): #超时时间的设定
- async with session.get(url,headers=headers) as response:
- if response.status == 200:
- html = await response.text()
- return {'error':'','html':html,'url':url}
- else:
- return {'error':response.status,'html':'','url':url}
- except Exception as err:
- return {'error':response.status,'html':'','url':url}
- async def handle_task(task_id,work_queue):
- while not work_queue.empty():
- queue_url = await work_queue.get()
- if not queue_url in crawled_urls:
- body = await get_body(queue_url)
- if not body['error']:
- crawled_urls.append(queue_url)
- parse(body)
- else:
- print('{}爬取失败'.format(queue_url))
- #解析返回的数据
- def parse(body):
- pass
- def remove_fragment(url):
- pure_url, frag = urldefrag(url)
- return pure_url
- #解析html,拼接新的url
- def get_urls(html):
- new_urls = [url.split('"')[0] for url in str(html).replace("'", '"').split('href="')[1:]]
- return [urljoin(root_url, remove_fragment(new_url)) for new_url in new_urls]
- if __name__ == '__main__':
- q = asyncio.Queue() #初始化一个异步的队列
- [q.put_nowait(url) for url in url_hub] #从初始的url队列中遍历,把url放入到队列中
- loop = asyncio.get_event_loop()
- tasks = [handle_task(task_id, q) for task_id in range(3)] #3个并发
- loop.run_until_complete(asyncio.wait(tasks))
- loop.close()
- for u in crawled_urls:
- print(u)
- print('-' * 30)
- print(len(crawled_urls))
aiohttp的模板的更多相关文章
- PYTHON --WebAPP项目转载(廖雪峰) -- Day 1 -- 搭建开发环境
Day 1 - 搭建开发环境 搭建开发环境 首先,确认系统安装的Python版本是3.5.x: $ python3 --version Python 3.5.1 然后,用pip安装开发Web Ap ...
- aiohttp爬虫的模板,类的形式
import asyncio import aiohttp import async_timeout from lxml import html from timeit import default_ ...
- python3异步爬虫 ——aiohttp模板使用
一.简单使用和讲解 import aiohttp import asyncio async def fetch(client): async with client.get('http://httpb ...
- aiohttp笔记
目录 简介 采集模板 一批,一次性采集 动态添加任务 动态添加任务,封装成类 简介 aiohttp需要python3.5.3以及更高的版本,它不但能做客户端爬虫,也能做服务器端,利用asyncio,协 ...
- python web开发 框架 模板 MVC
我是跟着廖雪峰老师学习的,对于我这样的纯小白来说,跟着他的网站学习,简直是被妈妈抱在怀里一样无忧无虑,这样的学习本来没有记录下来的必要,但是由于我的粗心大意,经常会出现一些错误,所以我决定把这些错误记 ...
- Jade模板引擎让你飞
写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...
- ABP入门系列(2)——通过模板创建MAP版本项目
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...
- CMS模板应用调研问卷
截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- 爬虫入门之scrapy模拟登陆(十四)
注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或# COOKIES_ENABLE ...
- Linux server配置安装Java,Tomcat服务器
系统:Ubuntu 16.04 dev_desktop 1.Java安装并配置环境变量 (1)从Java官方网站下载最新版JDK: http://www.oracle.com/technetwork/ ...
- Nginx性能问题答疑
为什么Nginx的总体性能比Apache高? Nginx使用的是epoll模型和kqueue的网络I/O模型Apache使用的是传统的select模型.目前linux的高并发场景使用的都是epoll模 ...
- HTTP协议图--HTTP 报文首部之请求行、状态行
1.请求行 举个栗子,下面是一个 HTTP 请求的报文: GET /index.htm HTTP/1.1 Host: sample.com 其中,下面的这行就是请求行, GET /index.htm ...
- 前端工程师使用 Deepin 笔记
笔者是一枚前端开发,在学习 Linux 的时候碰到了一个问题 —— 怎么练手?因为自己电脑上面装的是 Windows 系统,所以学习 Linux 的时候没办法进行练习,而敲指令是学习 Linux 最高 ...
- ajax获取json形式得题目和答案 实现答题功能
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Cloudera Manager大数据集群环境搭建
笔者安装CDH集群是参照官方文档:https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_ ...
- 8、Spring Cloud-配置中心 Spring Cloud Config(待补充)
8.1.Config Server 本地读取配置文件 Config Server 可以从本地仓库读取配置文件,也可以从远处 Git 仓库读取. 本地仓库是指将所有的配置文件统 写在 Config ...
- C#获取路径问题
由于在写控制台的时候,不能获取到绝对的路径.(下面为学习内容) System.IO.Path类中有一些获取路径的方法,可以在控制台程序或者WinForm中根据相对路径来获取绝对路径 获取web物理路径 ...
- mvc數據遷移
在本节中,我们将使用Entity Framework Code First 数据迁移功能将模型类的改变应用到数据库中. 默 认情况下,当我们使用Entity Framework Code First ...