异步多进程爬虫实现:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | from multiprocessing.dummy import Pool import requests
  pool = Pool(3)
  url_list = ['www.baidu.com','www.baidu.com','www.baidu.com']
  def get_requests(url):          return requests.get(url).text
  request_text_list = pool.map(get_requests,url_list)
 
   | 
 
单线程多任务异步协程:
正常协程实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
   | 
  import asyncio import time
  async func(url):     print('start')     time.sleep(3)     print('stop')      f = func(url) task = asynic.ensure_future(f) loop = asyncio.get_event_loop() loop.run_until+complete(task)
 
 
  import asyncio
  async func(url):     print('start')          await asyncio.sleep(3)     print('stop')           urls = [ 	'www.baidu.com',   	'www.baidu.com',  	'www.baidu.com',  	'www.baidu.com',  	'www.baidu.com'       ] tasks = [] for url in urls:     f = func(url)     task = asynic.ensure_future(f)          tasks.append(task)
  loop = asyncio.get_event_loop()
 
  loop.run_until+complete(asyncio.wait(tasks))
 
 
 
  | 
 
在使用协程进行网页爬取的时候,是无法使用await挂起的,也就是说,requests并不支持挂起:
在这个时候,需要使用支持await的请求模块。
也就是aiohttp。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   | import aiohttp import asyncio import time
  async def func(url):               async with aiohttp.ClientSession() as a:         async with await a.get(url=url) as response:             result = await response.text()             print(result)             return result urls = [     'https://www.baidu.com',     'https://www.baidu.com',     'https://www.baidu.com' ] tasks = [] for url in urls:     f = func(url)     task = asyncio.ensure_future(f)     tasks.append(task)
  loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks))
   | 
 
在aiohttp中,和requests一样有get和post请求
这些请求的参数基本相同,
唯一不同的地方在于代理IP
在requests中,代理IP的类型是一个字典类型的数据,
但是在这里,代理IP的类型是一个字符串
同时参数名为proxy
在通常情况下,不要使用asyncio!!!
在通常情况下,不要使用asyncio!!!
在通常情况下,不要使用asyncio!!!
在没有足够充足的代理与完善的伪装的时候,一定不要使用asyncio!
协程的恐怖性能足以让任何网站的程序发现,即使没有发现,过于高频的访问也足以击溃网站了!