直接上代码,都是很简单的一些demo,爬取的网站,都没有什么加密措施,所以应该不涉及违法数据,哈哈
1.爬取网页数据(aiohttp+sanic+scrapy+xpath解析html)
from sanic import Sanic import aiohttp # 导入aiohttp from sanic.response import text from scrapy import Selector # 导入html解析模块 app = Sanic(__name__) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"} async def getsource(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=0) as req: # 获得请求 if req.status == 200: # 判断请求码 source = await req.text() # 使用await关键字获取返回结果 print('爬取的文章') sel = Selector(text=source) l = [] a = sel.xpath('//ol[@class="breadcrumb"]/li[@class="active"]/text()').extract_first() b = sel.xpath('//ul[@class="nav nav-tabs"]/li[@class="active"]/a/text()').extract_first() c = sel.xpath('//span[@class="course-view"]/text()').extract_first() l.append((a, b, c)) print(l) else: print("访问失败") @app.route('/') async def sanic_hello(request): myloop = request.app.loop # 创建事件循环 # == event_loop = asyncio.get_event_loop() for i in range(1, 10): url = "https://edu.hellobi.com/course/{}" try: myloop.create_task(getsource(url.format(i))) # 添加任务到事件循环 except Exception as e: pass return text('爬取成功') if __name__ == "__main__": #用gunicorn部署命令 # gunicorn api_pachong:app --bind 0.0.0.0:8090 --workers=4 --worker-class sanic.worker.GunicornWorker app.run(host='127.0.0.1', port=8090, workers=8) #"" 爬取的文章 [('微软 BI 实战入门系列【持续更新中】', '课程概览', '1742 人学习')] 爬取的文章 [('MS SQL数据库入门及初级BI教程', '课程概览', '1667 人学习')] 爬取的文章 [('IBM Cognos 中级视频教程 【模型和报表教程】', '课程概览', '1227 人学习')] 爬取的文章 [('咖啡姐 BIEE 11G 精品入门视频教程【新手必看】', '课程概览', '2626 人学习')] 爬取的文章 [('BI基础知识漫谈【献给所以热爱商业智能的朋友】', '课程概览', '2398 人学习')] 爬取的文章 [('数据仓库精品教程【特点,数据仓库和ETL设计思想、架构(自上而下、自下而上)、常用概念】', '课程概览', '3856 人学习')] 爬取的文章 [('IBM Cognos 初级教程 【入门必学】', '课程概览', '2520 人学习')] 爬取的文章 [('Oracle BIEE 提高视频教程【时间序列函数,多表头制作,数据同步】', '课程概览', '1151 人学习')] 爬取的文章 [('微软商业智能实战入门及提高视频教程', '课程概览', '249 人学习')] """