本文首发于
知乎
之前我们讲过基于asycnio的异步爬虫实现,不过代码过于复杂,本文我们使用gevent模块实现异步爬虫。
本文分为如下部分
- 用gevent实现异步爬虫
- grequests模块
用gevent实现异步爬虫
因为使用非常简单,就直接上代码了
import gevent
from gevent import monkey
import requests
from bs4 import BeautifulSoup
monkey.patch_all() # 对所有io操作打上补丁,固定加这一句
def get_title(i):
url = 'https://movie.douban.com/top250?start={}&filter='.format(i*25)
text = requests.get(url).content
soup = BeautifulSoup(text, 'html.parser')
lis = soup.find('ol', class_='grid_view').find_all('li')
for li in lis:
title = li.find('span', class_="title").text
print(title)
gevent.joinall([gevent.spawn(get_title, i) for i in range(10)])
gevent本质上是开启了多个微线程,下面我们用
threading
模块来检验一下
import gevent
from gevent import monkey
import requests
from bs4 import