多线程爬虫

 1 # 多线程爬虫
 2 # map函数的使用
 3 # from multiprocessing.dummy import Pool
 4 # pool=Pool(4)
 5 # results = pool.map(爬取函数,网址列表)
 6 # 实例演示:
 7 from multiprocessing.dummy import Pool as ThreadPool
 8 import requests
 9 import time
10
11 def getsource(url):
12     html = requests.get(url)
13
14 urls = []
15
16 for i in range(1,21):
17     newpage = ‘http://tieba.baidu.com/p/3522395718?pn=‘ + str(i)
18     urls.append(newpage)
19
20 time1 = time.time()
21
22 for i in urls:
23     print(i)
24     getsource(i)
25 time2= time.time()
26 print(‘单线程耗时:‘ + str(time2-time1))
27
28 # 启用多线程
29 pool = ThreadPool(4)
30 time3=time.time()
31 results = pool.map(getsource,urls)
32 pool.close()
33 pool.join()
34 time4 = time.time()
35 print(‘并行耗时:‘ + str(time4-time3))
36
37 # 输出结果:
38 # 单线程耗时:20.18715476989746
39 # 并行耗时:5.100291728973389
时间: 2024-10-13 01:10:52

多线程爬虫的相关文章

python多线程爬虫设计及实现示例

爬虫的基本步骤分为:获取,解析,存储.假设这里获取和存储为io密集型(访问网络和数据存储),解析为cpu密集型.那么在设计多线程爬虫时主要有两种方案:第一种方案是一个线程完成三个步骤,然后运行多个线程:第二种方案是每个步骤运行一个多线程,比如N个线程进行获取,1个线程进行解析(多个线程之间切换会降低效率),N个线程进行存储. 下面我们尝试抓取http://www.chembridge.com/ 库存药品信息. 首先确定url为http://www.chembridge.com/search/se

php多线程爬虫类

代码: <?php /** * @desc:多线程爬虫类 * @author [Lee] <[<[email protected]>]> * @property * 1.calltrigger 触发爬虫程序的回调函数 * 2.calltodo 处理业务逻辑的回调函数 如:把抓取到的内容处理后存到数据库 * 3.timeout 超时时间,默认5秒 * 4.depth 重定向深度,默认3 * 5.name 上传文件的名字,默认file * 6.cookie 模拟登录时cookie

python多线程爬虫+批量下载斗图啦图片项目(关注、持续更新)

python多线程爬虫项目() 爬取目标:斗图啦(起始url:http://www.doutula.com/photo/list/?page=1) 爬取内容:斗图啦全网图片 使用工具:requests库实现发送请求.获取响应. xpath实现数据解析.提取和清洗 threading模块实现多线程爬虫 爬取结果: 思路:由于该爬虫存在网络密集IO和磁盘密集IO,存在大量等待时间,遂采用多线程方式爬取. 设计:本文采用多为结构化代码的面向对象封装设计思路,使用生产消费者模型,完成多线程的调度.爬取.

爬虫.多线程爬虫与多进程爬虫

多线程爬虫 多线程的复杂性 1.资源.数据的安全性:锁保护 2.原子性:数据操作是天然互斥的 3.同步等待:wait().notify().notifyAll() 4.死锁:多个线程对资源互锁,造成死锁 5.容灾:任何线程出现错误,整个进程都会停止 多线程的优势 1.内存空间共享,信息数据交换效率高 2.提高CPU的使用效率 3.开发便捷 4.轻,创建.销毁的开销小 Python线程 支持多线程(JavaScript PHP 不支持多线程) Python线程直接映射到native线程(Java1

爬虫学习之第四章爬虫进阶之多线程爬虫

多线程爬虫 有些时候,比如下载图片,因为下载图片是一个耗时的操作.如果采用之前那种同步的方式下载.那效率肯会特别慢.这时候我们就可以考虑使用多线程的方式来下载图片. 多线程介绍: 多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率.线程是在同一时间需要完成多项任务的时候实现的.最简单的比喻多线程就像火车的每一节车厢,而进程则是火车.车厢离开火车是无法跑动的,同理火车也可以有多节车厢.多线程的出现就是为了提高效率.同时它的出现也带来了一些问题.更多介绍请参考:https://bai

Python3多线程爬虫实例讲解

多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率.python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补.并且在Python3中废弃了thread模块,保留了更强大的threading模块. 使用场景 在python的原始解释器CPython中存在着GIL(Global Interpreter Lock,全局解释器锁),因此在解释执行python代码时,会产生互斥锁来限

python爬虫入门(四)利用多线程爬虫

多线程爬虫 先回顾前面学过的一些知识 1.一个cpu一次只能执行一个任务,多个cpu同时可以执行多个任务2.一个cpu一次只能执行一个进程,其它进程处于非运行状态3.进程里包含的执行单元叫线程,一个进程可以包含多个线程4.一个进程的内存空间是共享的,每个进程里的线程都可以使用这个共享空间5.一个线程在使用这个共享空间的时候,其它的线程必须等待(阻塞状态)6.互斥锁作用就是防止多个线程同时使用这块内存空间,先使用的线程会将空间上锁,其它的线程处于等待状态.等锁开了才能进7.进程:表示程序的一次执行

python:多线程爬虫(美女照片)

上编刚刚写的py,,而进度条不是很满意,而且 是单线程,所以修改为多线程,如果网络快,5分钟全部下载完全,该网站并发不好,而且经常访问不了,出现失败很正常. 只是学习py爬虫吧了. #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib from os import path,makedirs import re from threading import Thread from datetime import datetime d

C#多线程爬虫抓取免费代理IP

这里用到一个HTML解析辅助类:HtmlAgilityPack,如果没有网上找一个增加到库里,这个插件有很多版本,如果你开发环境是使用VS2005就2.0的类库,VS2010就使用4.0,以此类推..........然后直接创建一个控制台应用,将我下面的代码COPY替换就可以运行,下面就来讲讲我两年前做爬虫经历,当时是给一家公司做,也是用的C#,不过当时遇到一个头痛的问题就是抓的图片有病毒,然后系统挂了几次.所以抓网站图片要注意安全,虽然我这里没涉及到图片,但是还是提醒下看文章的朋友. clas