首页
学习
活动
专区
圈层
工具
发布

Python-并发下载-协程实现-上

协程是在一个线程内部执行, 一旦遇到了网络 I/O 阻塞,它就会立刻切换到另一个协程中运行,通行不断的轮询,降低了爬取网页的时间。

协程实现爬虫,步骤如下:

① 定义一个负责爬虫的类,所有的爬虫工作完全交由该类负责。

② 使用一个队列 data_queue 保存所有的数据。

③ 创建多个协程任务,每个协程都会使用页码构建完整的网址,访问网址爬取和提取有用的数据,并保存到数据队列中,直到所有网页中的数据提取出来。

④ 将 data_queue 队列中的数据全部取出来,保存到本地文件 duanzi.txt 中。

一、创建一个 Spider 类,负责采集和解析网页的源代码

在 movie_gevent.py 文件中

代码语言:javascript
复制
import requests
from queue import Queue

class Spider(object):
  def __init__(self):
    self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36", "Accept-Language": "zh-CN,zh;q=0.8"}
    self.base_url = "https://www.qiushibaike.com/8hr/page/"
    # 创建保存数据的队列
    self.data_queue = Queue()
    # 统计数量
    self.count = 0

二、定义一个用于发送请求的方法 send_request()

在 Spider 类中

代码语言:javascript
复制
def send_request(self, url):
  print("[INFO]: 正在爬取" + url)
  html = requests.get(url, headers=self.headers).content
  # 每次请求间隔 1s
  time.sleep(1)
  self.parse_page(html)
下一篇
举报
领券