当前位置: 首页 > news >正文

网站缓存实例成功的网站不仅仅是优化排

网站缓存实例,成功的网站不仅仅是优化排,北京seo公司,在网上怎么做推广多线程在爬虫中应用非常广泛,对于中大型项目来说很有必要,今天我将以初学者的姿态来完成一个简单的多线程爬虫程序。 1、如何认识多线程 计算机完成一项或多项任务,往往可以存在很高的并行度:若是多核处理器则天然的可以同时处理…

多线程在爬虫中应用非常广泛,对于中大型项目来说很有必要,今天我将以初学者的姿态来完成一个简单的多线程爬虫程序。

1、如何认识多线程

计算机完成一项或多项任务,往往可以存在很高的并行度:若是多核处理器则天然的可以同时处理多项事务,若是单处理器时其实也可以分时隙处理多任务,此时虽然在某一时间点上确实是不能一脑多用,但却可以省掉很多处理器之外的等待时间,实现某种意义上的并行,或者叫多线程,进而带来效率上的提高。实际上,若不支持多线程,那么我们的电脑似乎就只能同时干一件事了,那该有多low啊。

当爬虫遇上了多线程,那么就可以实现并行爬虫,本来一只虫子在爬取数据,现在变成了多只虫子同时爬,效率自然要高出许多。所以,threading库应运而生。

Ps:关于进程和线程的区别,简单讲:进程层次更高一点,更接近任务级别,而线程层次要相对低一点,更接近处理器端真实处理过程。包含关系:一个任务可包含多进程,一个进程可包含多线程。

2、如何实现多线程python爬虫

以下只是一个简单总结。

(1)建立线程

#1.创建函数,引入线程
deffun():pass
thread-1= threading.Thread(target=fun,args=[],name='thread-1')#2.直接继承线程类
classmythread(threading.Thread):def __init__(self):Thread.__init__(self):#加这一步后主程序中断退出后子线程也会跟着中断退出self.daemon = Truedef run(self):#线程运行的函数pass
thread-1= mythread()

(2)开启线程

thread_1.start() #开始线程
thread_1.join() #阻塞直至该线程运行完毕

3、线程内实现功能

若是采用构建函数引入线程,则直接在函数fun()内完成特定功能即可
若是采用继承线程类,则可在类中的run()方法完成特定功能

4、线程间同步

因为线程间存在竞争和冲突,所以需要线程间同步。考虑队列(queue)已内置了同步功能,所以在多线程分配任务时往往配合一个queue来实现,所以有人说实现多线程爬虫重点就是队列,队列用明白了多线程就自然理解了。

5、效率对比

来个简单的效率对比。给定100个左右网页链接,完成从这些网页中下载文本并保存至本地txt文件中。显然,这是一个典型的可以并行操作的任务。完成该任务的效率对比如下:

线程数1:耗时45.9s
线程数2:耗时25.2s
线程数4:耗时13.5s
线程数8:耗时8.2s

可见,多线程情况下效率提升还是非常明显的。当然,肯定不会是线程数越多越好。

python爬虫常用模块

python标准库之urllib模块

涉及到网络这块,必不可少的模式就是urllib.request了,顾名思义这个模块主要负责打开URL和HTTP协议之类的

urllib最简单的应用就是

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

url 需要打开的网址

data Post提交的数据

timeout 设置网站的访问超时时间

urlopen返回对象提供方法

read() , readline() ,readlines() , fileno() , close() :对HTTPResponse类型数据进行操作

geturl()函数返回response的url信息,常用于url重定向的情况

info()函数返回response的基本信息

getcode()函数返回response的状态代码,最常见的代码是200服务器成功返回网页,404请求的网页不存在,503服务器暂时不可用

编写一个testurllib.py来实验一下,代码如下

#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
import urllib.request
import time
import platform
import os
def clear():'''该函数用于清屏'''print(u'内容较多,显示3秒后翻页')time.sleep(3)OS = platform.system()if (OS == u'Windows'):os.system('cls')else:os.system('clear')def linkbaidu():url = 'https://www.baidu.com'try:response = urllib.request.urlopen(url, timeout=3)except urllib.request.URLError:print(u'网络地址错误')exit()with open('baidu.txt','w') as fp:fp.write(response.read().decode('utf-8'))print(u'获取url信息,response,geturl() \n: {}'.format(response.geturl()))print(u'获取返回代码,response.getcode() \n:{}'.format(response.getcode()))print(u'获取返回信息,response.info() \n:{}'.format(response.info()))print(u'获取的网页内容以存放当前目录baidu.txt中,请自行查看')if __name__ == '__main__':linkbaidu()

应该看到的效果

在这里插入图片描述

baidu.txt内容如下

在这里插入图片描述

http://www.yayakq.cn/news/495537/

相关文章:

  • 信誉好的永州网站建设热点新闻事件及评论100字左右
  • 网站建设嘉兴岳西县建设局网站
  • 百度网盘 做网站图床wordpress怎么上传文本
  • 宝塔面板做网站不能打开PHP显示404WordPress主题页面模板不见了
  • 当前主流的网站开发语言学软件工程好找工作吗
  • 清溪仿做网站深圳建网站哪个济南兴田德润有活动吗
  • app推广平台排行榜网站更换服务器对seo的影响
  • 外贸网站建设产品上海城隍庙简介
  • 网站建设建设公司wordpress 小程序 商城
  • 股票网站怎么做营销网站怎么做合适
  • 网站建设市场介绍黄冈做网站公司
  • 公司做网站收费diango是做网站的后端吗
  • 支付公司网站制作费怎么做分录做暧视频网站
  • 张店免费做网站国内永久免费crm系统软件高清完整版
  • 知名的设计公司网站更改wordpress地址
  • 国外html5模板网站网站建设合同标的
  • 昌吉网站建设怎么做网站推广世界杯
  • 公司网站备案信息查询南通启益建设集团有限公司网站
  • 简单网站建设哪家便宜受欢迎的做网站
  • 网站制作公司 顺的金华企业制作网站
  • 前端开发做网站吗做动态图片下载哪个网站好
  • 网站销售怎么样的标书制作注意事项
  • 温州市建设小学网站首页网页制作流程包括哪些
  • 辛集seo网站优化价格广州新闻最新消息今天
  • 广东微信网站建设哪家专业修文县生态文明建设局网站
  • 建设网站的价格分析android开发者官网
  • 与安网站建设自己做网站跟域名怎样做
  • 九江开发区建设规划局网站wordpress采集视频插件
  • 人事管理软件优化大师班级优化大师
  • 建筑网站推荐重庆沙坪坝火车站