前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-并发下载-协程实现-上

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

作者头像
小团子
发布2019-07-18 15:23:52
7010
发布2019-07-18 15:23:52
举报
文章被收录于专栏:数据云团数据云团

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

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

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

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

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

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

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

在 movie_gevent.py 文件中

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 类中

def send_request(self, url):
  print("[INFO]: 正在爬取" + url)
  html = requests.get(url, headers=self.headers).content
  # 每次请求间隔 1s
  time.sleep(1)
  self.parse_page(html)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档