博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gevent爬取豆瓣电影top250
阅读量:6535 次
发布时间:2019-06-24

本文共 1479 字,大约阅读时间需要 4 分钟。

采用协程来实现快速抓取页面信息

出处:

# -*- coding:utf-8 -*-import requests, time, geventfrom lxml import etreefrom gevent import monkeymonkey.patch_all()class DoubanMovie(object):    def __init__(self):        self.base_url = "https://movie.douban.com/top250"        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}        # 电影总数量        self.count = 0    def send_request(self, url):        time.sleep(2)        try:            response = requests.get(url, headers=self.headers)            data = response.content            self.parse_data(data)        except Exception as e:            print e    def parse_data(self, data):        html_data = etree.HTML(data)        # 电影名字        name_list = html_data.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')        for name in name_list:            print name            # 每获取一部电影名字电影数量增加1            self.count += 1    def run(self):        start_time = time.time()        gevent_list = []        for page in range(0, 225 + 1, 25):            url = self.base_url + '?start=' + str(page)            # 创建协程            gevents = gevent.spawn(self.send_request, url)            gevent_list.append(gevents)        # 主线程等待        gevent.joinall(gevent_list)        end_time = time.time()        total_time = end_time - start_time        print '全部电影%d部' % self.count        print '总时间%ss' % total_timeif __name__ == '__main__':    spider = DoubanMovie()    spider.run()

转载地址:http://qrzdo.baihongyu.com/

你可能感兴趣的文章
oracle实现数据行级控制-dbms_rls包的应用
查看>>
Abap 内表的语法
查看>>
DoEvents的应用及注意事项
查看>>
cmake 学习笔记(二) - 1+1=2 - 博客频道 - CSDN.NET
查看>>
浅谈EF 4 CodeFirst的调试技巧及注意要点
查看>>
Wordpress主题和网站设计开发手册和资源
查看>>
IOCP中在WSASend以及WSARecv的时候出现WSA_IO_PENDING情况的说明
查看>>
jstl 标签
查看>>
vc/vs工程命令行编译
查看>>
UVA 1419 - Ugly Windows
查看>>
linux.net Jexus web server运行于多进程模式时需要注意的事项
查看>>
SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)
查看>>
通用用户权限管理系统组件V3.8功能改进说明 - 审批流程菜单的隐藏
查看>>
SSIS学习视频(SQL Server 2008)
查看>>
报表数据源[置顶] 精通BIRT:Eclipse商务智能报表工具开发实践指南
查看>>
Android实现下载图片并保存到SD卡中
查看>>
方法多维数据仓库(八):数据仓库中数据库设计的基本模型
查看>>
介绍生成PHP网站页面静态化的方法
查看>>
session连接SecureCRT的详细安装及使用教程
查看>>
7.3 Hardware Prefetching 《Speculative Execution in High Performance Computer Architectures》
查看>>