在开发爬虫的时候,对于老工程师的工作节奏一般是先实现爬虫的抓取逻辑,然后就要提升爬取的效率了。
众所周知想提升效率就要涉猎到并发编程姿势啦,所以今天我们抛砖引玉,不去过多的计较太原理和抽象的东西,而是用 Python 自带的并发标准库和第三方库来看看怎么优雅的实现并发编程和提升爬取效率。
我们写来个简单的爬虫:
# -*- coding=utf-8 -*-
import time
import requests
from bs4 import BeautifulSoup
t1 = time.time()
urls = [
'<https://movie.douban.com/top250?start={}&filter=>'.format(i)
for i in range(0, 226, 25)
]
def job(url):
r = requests.get(url)
content = r.text
soup = BeautifulSoup(content, 'html.parser')
item = soup.select(".item")
for i in item:
print(i.select(".title")[0].text)
for url in urls:
job(url)
# 耗时: 2.0312600135803223
print("耗时:", time.time() - t1)
这段代码的作用是使用 requests 和 BeautifulSoup 第三方库对豆瓣top250的电影名称进行的获取,非常简单,相信老司机的你们不需要我过多的解释。
然后我们统计一下耗时:2.0312600135803223
然后我们来思考,现在各种大牛口中的多线程,多进程和协程,我们在开发中是如何实现的。
虽然不过多的说明原理,但是我相信你们心中还是好奇