Python3.6 协程 aiohttp+asyncio+pymysql异步爬虫的实现 爬取资源存入数据库

相信很多业余学习的小伙伴们开始接触python爬虫技术时,都被它深深的吸引了,上手简单,见效快,一个text=urllib.request.urlopen('xxxx').read().decode('utf-8)就可以抓到网页的代码内容,通过正则提取自己想要的部分并保存到自己想要的地方去,成就感油然而生,心中萌生出各种伟大的项目。。。。。。

2017年11月23日正式开始自学python,买到了一本《python基础教程》第二版开始了python之旅,12月10日买了本《精通Python网络爬虫》和《精通Scrapy网络爬虫》两本书,这三本书基础教程只看了基础语法,数据类型,定义函数和类,异常处理,精通python网络爬虫只看了多线程实例,精通Scrapy一页都没有翻开,通过自己的学习感悟,给比我还新的新人一点点自学建议,对于零基础的,建议买本基础的工具书把基础语法,数据类型,定义函数学懂再去上手

此博客是本人人生中第一篇博客,比较激动,废话较多,上正题,自学的小伙伴们如果有兴趣可以加我qq互相督促学习进步哈。

正题:python3.6 协程 异步爬虫实现  及  爬取资源到数据库

1,为提高爬取的效率,我们会用到多线程,多进程,协程。关于多进程和多线程网上的概念及用法太多太多,不多啰嗦。关于协程如何实现,首先要用到asyncio和aiohttp模块,asyncio模块用于定义协程函数,启动协程。

定义协程函数用 async def xxx 和 await ,启动协程用loop=asyncio.get_event_loop()  loop.run_until_complete(asyncio.wait(tasks))  (tasks是一个asyncio.ensure_future(协程函数(参数))的列表,相当于多任务,异步执行tasks里的所有任务)或者loop=asyncio.get_event_loop()  future=asyncio.ensure_future(协程函数(参数)) loop.run_until_complete(future) 相当于一个任务,调用一次协程函数

2,爬虫时间阻塞主要在对服务器发送请求和接收请求,对抓取的函数我们用异步,那么支持异步的抓取的模块,用aiohttp。至于用法,照猫画虎就好,举个栗子:(这个例子是 根据一个关键词为入口在wap.sogou.com上抓取 搜索相关 的关键词并存入数据库 根据搜索相关的关键词再去搜索得到搜索相关关键词,无限循环)

async def run(url,urlq,kwdq2):

    headers={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 'Accept-Encoding':'gb2312,utf-8',
 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
 'Connection':'Keep-alive'
} #headers信息,一般包含User-Agent就可以
    try:
        async with aiohttp.ClientSession() as session:
            aiohttp.Timeout(1)                                    #设置超时时间
            async with session.get(url,headers=headers) as response: #相当于response=urllib.request.urlopen(url)
              
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值