说明:本文为博主原创文章,未经博主允许不得转载。如果代码有不懂的,欢迎与我探讨!邮箱:1103540209@qq.comgithub地址:https://github.com/wstchhwp文章目录1.Matplotlib基本概念2.Matplotlib三层结构容器层辅助显示层图像层总结3.plt的基本用法3.1Figure对象3.2plot的使用3.3如何在同一个figure内部设置多个图片3.4如何调整subplot的间距4.参考可视化是在整个数据挖
系统 2019-09-27 17:54:39 2224
上次完成的url爬取项目并不能满足需求,在此完成了一个更为强大的爬取代码,有需要的可以直接运行,根据自己爬取的网站更改部分正则和形参即可。前排提示:运行需要耐心,因为几千个url爬完的话,还是建议花生瓜子可乐电影准备好。下面是代码,代码有注释,很容易理解。注意:爬虫代码每过一段时间就需要更新,因为爬的东西在变,所以可能过一段时间就要更新爬虫。#-*-coding:utf-8-*-"""CreatedonWedSep2914:01:282018@author
系统 2019-09-27 17:52:48 2224
之前用了谷歌的selenium模块,为了练习一下所以写了这个(没错才不是别的理由!)代码里涉及到了各种复杂的情况,包括要找的div在别的iframe中的处理方式,顶部导航栏的定位方式等等。综合性很强下面是代码fromseleniumimportwebdriverimporttimefromfake_useragentimportUserAgentopt=webdriver.ChromeOptions()#opt.add_argument('--headle
系统 2019-09-27 17:52:24 2224
什么是爬虫爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程。爬虫的分类1.通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。搜索引擎如何抓取互联网上的网站数据?门户网站主
系统 2019-09-27 17:52:22 2224
numpy中的random模块有多个函数用于生成不同类型的随机数,常见的有uniform、rand、random、randint、random_interges下面介绍一下各自的用法1、np.random.uniform的用法np.random.uniform(low=0.0,high=1.0,size=None)作用:可以生成[low,high)中的随机数,可以是单个值,也可以是一维数组,也可以是多维数组参数介绍:low:float型,或者是数组类型的,
系统 2019-09-27 17:52:05 2224
定时与邮件在这一关,我们希望为一般的爬虫程序新增两个实用性比较强的功能:第一是定时功能,即程序可以根据我们设定的时间自动爬取数据;第二是通知功能,即程序可以把爬取到的数据结果以邮件的形式自动发送到我们的邮箱。这两个功能可以让爬虫程序定时向我们汇报。试想一下,如果你是一位股票(或比特币)的持有者,你希望及时爬取股票(或比特币)每日的价格数据,方便你能及时卖出或买入,那每天都去启动一遍爬虫程序是极其不高效的。而此时,如果你的爬虫程序有定时和发送邮件功能,能自动
系统 2019-09-27 17:50:59 2224
场景说明假设有一个mysql表被水平切分,分散到多个host中,每个host拥有n个切分表。如果需要并发去访问这些表,快速得到查询结果,应该怎么做呢?这里提供一种方案,利用python3的asyncio异步io库及aiomysql异步库去实现这个需求。代码演示importloggingimportrandomimportasynciofromaiomysqlimportcreate_pool#假设mysql表分散在8个host,每个host有16张子表TB
系统 2019-09-27 17:50:32 2224
浏览器的简单操作#导入webdriver模块#创建driver对象,指定Chrome浏览器driver=webdriver.Chrome()#窗口最大化driver.maximize_window()#访问百度driver.get("http://baidu.com")driver.get("http://sina.com")#后退driver.back()#前进driver.forward()#刷新driver.refresh()#关闭窗口driver.
系统 2019-09-27 17:47:25 2224
一、死锁简单来说,死锁是一个资源被多次调用,而多次调用方都未能释放该资源就会造成死锁,这里结合例子说明下两种常见的死锁情况。1、迭代死锁该情况是一个线程“迭代”请求同一个资源,直接就会造成死锁:importthreadingimporttimeclassMyThread(threading.Thread):defrun(self):globalnumtime.sleep(1)ifmutex.acquire(1):num=num+1msg=self.name
系统 2019-09-27 17:46:39 2224
具体内容如下:使用sorted将字典按照其value大小排序>>>record={'a':89,'b':86,'c':99,'d':100}>>>sorted(record.items(),key=lambdax:x[1])[('b',86),('a',89),('c',99),('d',100)]sorted第一个参数要可迭代,可以为tuple,list>>>items=[(1,'B'),(1,'A'),(2,'A'),(0,'B'),(0,'a')]>
系统 2019-09-27 17:38:00 2224