自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大坡3D软件开发

自主操作系统和CPU--用软件和芯片来改变世界

  • 博客(2434)
  • 资源 (40)
  • 论坛 (34)
  • 收藏
  • 关注

原创 爬虫日记(1):为什么需要爬虫

随着时代的发展,从远古时代的刀耕火种迅速地进入现代的信息时代,既然称为信息时代,显然信息才是关键的东西,才是唯一最有价值的东西。好像说一个原子里,原子核不重要了,重要的是原子核外面的电子。因为电子可以自由地移动,而原子核一直留在原来的地方,除非通过物流系统才能移动。自从发现电子可以自由地移动,人们就慢慢地通过电子来传送信息。最开始发明的是电报,电报能传送的东西很简单,就是长和短,而通过长和短的组合来构造信息的基石,再从长和短中还原信息出来。在这段时间里,电报是通信的方式,但是它的爬虫并不缺少,那就是第三方破

2021-03-03 17:42:51 215 1

原创 爬虫日记(75):Scrapy的Settings源码分析

Scrapy有一个比较大的设计思路,就是任何模块都是可配置的,这样就会让系统更加灵活,也可以简化系统的复杂程度。所以需要设计一个比较复杂的Settings类,保存所有配置的参数,灵活地读取和更新。先来看一下Settings类继承图:从代码里使用来看,Settings类使用像字典类,但是它不是基于字典类来实现的,这是为什么呢?这是因为它不仅按字典的方式来使用,并且还要求有优先级别的,由于字典不存在优先级别,因此不能继承字典类,改为继承MutableMapping类。这样的设计方式也是值得我们.

2021-05-18 11:47:23 18

原创 爬虫日记(74):Scrapy项目配置参数源码分析(二)

接着下来是下面这语句:init_env(project)这是调用init_env函数,这个函数主要用来读取所有的scrapy.cfg,然后把这个配置文件里的settings字段所有参数保存到os.environ['SCRAPY_SETTINGS_MODULE']。scrapy.cfg 文件,其采用 ini 格式,和普通的配置文件用法相同。其会在下面的位置查找该文件。系统级别:/etc/scrapy.cfg或c:\scrapy\scrapy.cfg。用户级别:~/.config/scrapy.

2021-05-17 21:21:32 24

原创 爬虫日记(74):Scrapy项目配置参数源码分析

前面已经知道scrapy程序运行之后,会调用execute()函数来执行,这是程序入口点,而在这个入口点的背后,第一步做的事情就是获得程序所有的配置参数,因为scrapy程序设计为非常灵活的程序,基本任何模块和组件都是通过配置文件来定制,如果对这个不了解,建议看一下我前面发的文章。def get_project_settings(): if ENVVAR not in os.environ: project = os.environ.get('SCRAPY_PROJECT',

2021-05-16 12:51:34 26

原创 爬虫日记(73):Scrapy程序运行入口点分析

前面分析了怎么样产生scrapy.exe程序,然后通过它就会调用下一个模块,就是cmdline.py文件,它是位于目录scrapy里面,如下图:我们可以通过修改这个文件来验证一下是否最开始调用这个文件运行,找到execute函数的位置,添加下面的代码:然后我们到终端窗口里运行爬虫的命令:scrapy crawl quotes这时就可以看到输出如下:从输出的提示可见,第一行就提示了我们修改的字符串,说明是运行这个文件入口无疑了。这个过程如下图所示:到这里,我们知道scr

2021-05-15 12:04:51 29

原创 爬虫日记(72):Scrapy安装程序入口点分析

从这里开始,我们开始进入一个Scrapy框架源码分析的学习过程,为什么要学习它的源码呢?这是因为这个框架的源码设计非常优秀,也是我们学习开发python程序的模范,也是我们学习python技术的一所大学,同时也可以加深我们对开发爬虫的了解。不过,这个过程比较漫长,可能还比较费脑,也许还学不会它。这些都不重要,重要是我们要开始行动,一步一步研究它,就可以达到成功彼岸。先从哪里开始呢?这是一个好问题,因为没有目标就没有办法向前,盲目地行动也是没有结果的。其实,我们可以这样想,每次我们运行爬虫时,都会使.

2021-05-14 16:10:47 33

原创 爬虫日记(71):用OCR来对抗字体反爬

在开发爬虫的过程中,经常会遇到一些网站,用浏览器查看是正常的,但是当你去查看HTML的源码时,就会与显示的不一样,如下面的网站:这段是在浏览器里查看的,接着来查看一下HTML源码里显示的:可以看到这一段文字,已经被自定义的字体进行分割,不可能直接得到原文了,它的对应关系如下:这里用一行表示了一个汉字“下”,可见是花了血本的。以往碰到这种问题,基本上就是采用下面的方案来解决:  1. 获取字体文件,  2.Unicode解码字体文件,保存为ttf文件,...

2021-05-13 16:57:13 40

原创 爬虫日记(70):Scrapy的SitemapSpider使用

在开发爬虫的过程中,经常会遇到整个网站内容进行下载,比如像头条的APP类似的需求,它需要统计全世界上所有的新闻网站,看看这些网站出现什么内容是热点,这样把所有热点放到一起,再推荐给用户,就成为一种便利的商业模式。因为所有人类都有一个需求,就是了解这个世界上发生的事情,企图与世界同步,不成为落后的那一个,毕竟落后就会挨打,就会造成信息不对称,就会多交这样的智商税,这是数千年来人类锤炼出来的基因。在互联网上很多网站也提供了一种叫做sitemap(网站地图)的信息结构,我们可以从这里获取到那个网站的最新.

2021-05-12 10:55:18 31

原创 爬虫日记(69):Scrapy的CrawlSpider使用

在开发爬虫的过程中,经常会遇到非常规则的网站,只需要一条或几条规则就可以把整个网站的内容收集到了。对于这样的网站,我们就可以采用更加简单的方法,就是采用CrawlSpider类作为基类的蜘蛛类,它可以从首页里指定一些规则,然后就可以收集到下一个连接的地址。在前面的文章:https://mysoft.blog.csdn.net/article/details/114984305里已经介绍过这个类的基本内容,如果你记不起了,可以再回头去查看一下。接着下来,我们来演示一下如何爬取一个RSS的网站:

2021-05-11 10:17:28 33

原创 爬虫日记(68):Scrapy的CSVFeedSpider使用

在互联网上有很多信息是通过CSV文件格式来发布的,比如联合国的一些数据,当你需要从联合国的网站上寻找相关数据来分析时,就需要使用爬虫来抓取CSV文件,然后分析里面的数据。很多研究工作都是长期的过程,如果每次手动去下载,那么就比较麻烦,并且很难得到最新的数据,或者说最及时的数据。比如一个新闻工作者,想通过联合国上一些数据来报道一篇新闻,如果网站上刚发布,就得到数据的通知,并进行了分析,就可以立即写成新闻了。这个过程使用爬虫来做,就会比人工要快多了,首先不需要人工随时去查看网站,可以让程序自动化去查询。其次可以

2021-05-10 11:29:39 31

原创 爬虫日记(67):Scrapy的XMLFeedSpider使用

在前面我们使用一般的方式来抓取过新闻,那是基于普通的urllib和beautifulsoup组件来实现的,需要写比较多的代码。由于RSS是一种标准格式,这样我们就可以使用标准类抽取网页内容,不需要从头开始写这些代码。简易信息聚合(也叫聚合内容)是一种基于XML的标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一

2021-05-09 17:39:34 29

原创 爬虫日记(66):Scrapy的设置参数-抓取风格

Scrapy允许我们采用不同的风格来抓取网页。针对不同的需求,需要采用不同的抓取方式。比如我们去抓取小说网站的时候,就需要采用深度优先的方式,因为一部小说是一章接着一章更新下去的,所以同一时间更新的很少。但是当我们去抓取新闻网站时,就不能这样做了,因为新闻网站都会把最新的新闻放在每一个页面的最前面,这时应该采用广度优先的方法,可以采用下面的设置:# 先进先出,广度优先DEPTH_PRIORITY = 1SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFi

2021-05-08 10:41:53 47

原创 爬虫日记(65):Scrapy的设置参数-Telnet

Scrapy包含了一个内置的Telnet控制台,可以为你提供正在运行中的爬虫进程的Python shell。class scrapy.extensions.telnet.TelnetConsole内置定义了这个类作为扩展。默认的情况下,TELNETCONSOLE_ENABLED是打开的,如果你想禁止这个服务打开,可以把它设置为False。使用TELNETCONSOLE_PORT来设置服务的端口,由于不同的电脑上端口不一样,如果采用默认的端口有冲突时,就可以修改这个参数,默认:TELNETCO

2021-05-08 08:53:37 25

原创 爬虫日记(64):Scrapy的设置参数-统计分析

在开发爬虫的过程中,经常需要分析爬虫的运行状态,以便进一步改进代码,或者提高效率。要想实现这一个目标,必须把爬虫运行的状态数据收集到,这样才能知道是网站里面数据太多了,还是代码效率不高,还是方法不对的情况。如果没有这样的统计分析数据,就无法进一步改进。幸运的是scrapy已经提供了这样一个统计类StatsCollector,它是默认就会收集到所有信息,无论你是否启用STATS_DUMP的设置值,也就是说无论你设置为True,还是False,这个类都会收集数据,这个参数只是判断是否在关闭蜘蛛类时打印输出这些统

2021-05-06 15:50:16 33

原创 爬虫日记(63):Scrapy的设置参数-日志

在开发Scrapy爬虫的应用时,通常使用这些设置来对程序进行一些分析,比如通过输出日志、统计和Telnet工具提供性能和调试信息。可以参考下面的连接:https://docs.scrapy.org/en/latest/topics/settings.html#std-setting-LOG_LEVEL日志Scrapy制定了日志的等级,可以根据发生问题的严重程度,把日志分为:CRITICAL, ERROR, WARNING, INFO, DEBUG。当爬虫要发布上线稳定之后,只要输出.

2021-05-04 18:04:07 38

原创 爬虫日记(62):Scrapy的合约测试

在开发爬虫的过程中,经常遇到这种情况,比如几个星期之前编写的爬虫可以完美运行,突然有一天经理看不到数据了,这时就把你叫到他的办公室,开始对你训话了。你会有一肚子的不满,因为这段代码你确实加班加点来完成的,并且也通过了测试部门的测试,并且运行了几周时间。但结果是经理不满意,运维部门抱怨,测试人员工作量增加。面对此种情况,你一定会思考一个办法来改变这种情况,否则工作会不顺心,效率提不上去。要解决上述的困境,可以使用蜘蛛类的合约测试来处理。这个合约测试有点像代码的单元测试,它可以让你快速地知道哪里有运行.

2021-05-02 09:49:27 37

原创 爬虫日记(61):Scrapy的数据去重处理管道

在开发爬虫的过程中,经常会遇到有很多数据是重复的,那么这些重复的数据,我们只需要其中一条就可以了,并不需要全部进行保存,这个过程就叫做去重处理。这样做不仅可以节省处理时间,还可以节省大量储存空间。在Scrapy里去重是比较简单的,如果数据不大可以使用set集合就可以解决,如果比较大的可以使用数据库的方式去重。这里主要介绍使用set集合的方法来去重,因此先要定义一个管道类:class AuthorDupPipeline: def __init__(self): sel...

2021-05-01 11:10:48 54

原创 爬虫日记(60):Scrapy的过滤性管道

在开发爬虫的过程中,经常会遇到有一些内容不感兴趣、不需要的,这时候就需要使用过滤性的管道来处理。比如你去下载一些网店的数据,只对有价格显示的项有用,没有价格显示出来就没有办法处理,这时就可以采用过滤性的管道。如下的例子:from itemadapter import ItemAdapterfrom scrapy.exceptions import DropItemclass PricePipeline: vat_factor = 1.15 def process_...

2021-04-30 17:42:59 43 1

原创 爬虫日记(59): Flask的Mysql可以十分钟学会

如果你已经把前面一文学会了,并且建立起基本的MYSQL开发环境,再接着下来就非常简单了,为什么这样说,是因为你可以不使用SQL语句来操作数据库,这样节省了学习SQL语言的时间,当然可以十分钟学会操作MYSQL数据库,这是巨大的进步。当然,这样写出来的数据库操作,相比SQL语句来说,有一点点的性能差异,只要你不是操作数百万的表,不是十几个表联合查询,不是写一页A4纸的SQL,那么差别不会太大。其实这里使用了一个数据库的开发工具flask_sqlalchemy,它的作用就是让你不用SQL语句就可以操作.

2021-04-23 10:57:03 74

原创 爬虫日记(58): Flask的Mysql初步

要开发Web应用,必须要使用到数据库,而网络上有很多数据库,比如MYSQL、PostgreSQL,这两个数据库是必须要会的,因为它们免费,对于中小企业来说,也够用了。如果采用MYSQL,那么你开发的软件就不能销售了,否则就不是免费的了。不过,PostgreSQL是可以销售的,也不收费。采用哪一个,就取决公司的政策了。数据库在WEB应用里,主要用来保存一些系统的数据,比如用户登录的帐号和密码,又或者论坛的内容,又或者像电商的产品的描述和价格等等。使用python来访问数据库是非常简单的,这..

2021-04-22 17:25:56 46

原创 爬虫日记(57): Flask的几个事件装饰器使用

在开发WEB应用中,时常需要判断用户是否登录,如果登录才可以进行其它操作,如果没有登录就只能转到登录的页面。如果有很多路由地址,每一个之前都调用一个函数,或者写一段代码来判断用户是否登录,这样做也是可以实现的,不过这样做,并不是最聪明的做法,为什么这样说呢,是因为还有flask框架内部定义的装饰器函数,使用它就可以达到在请求事件之前进行运行某一个函数的功能,也可以认为它是事件响应函数,或者说钩子函数等等。既然这些函数这么大作用,就来学习一下这几个函数的使用吧。before_first_request:

2021-04-21 16:07:42 42

原创 爬虫日记(56): Flask的Session使用

前面学习过了Cookie的使用,也明白了Cookie与Session的区别。凡是使用过 Flask,可能对 Flask 中 session 不陌生,我们通常用 session 保存特定的用户信息,从而达到在 request 请求之间共享数据的目的,需要注意的一点 flask 中的 session 是基于 cookies 实现的,也就意味着受制于 cookies,一旦出于某种原因 cookies 失效了,也就意味着 session 也会随之失效。由于要使用session对象,要在库里导入:fro.

2021-04-21 15:12:03 36

原创 爬虫日记(55): Flask的Cookie使用

当你看到Cookie这个单词时,估计已经想吃曲奇饼了。你也许会比较奇怪,难道电脑也吃饼干,虽然电脑不会吃饼干,但是这个技术手段还真的有点像饼干的属性。首先这个技术实现了一个小的文件,就是说这个文件不会很大,通常不会超过4K大小,这个是用饼干小的特性来形容。接着下来的实现过程,就像人们喂给小孩吃饼一样,把服务器当作一个大人,客户端浏览器就当作一个小孩。服务器要使用的数据,它不保存在服务器,而是通过网络把数据喂给客户端的电脑,让客户端的电脑收藏起来。当服务器端再需要时,再从客户端的电脑里读取出来。显然这个过程,

2021-04-20 11:41:00 44

原创 爬虫日记(54): Flask的上传文件

在Web开发时,经常需要实现文件上传功能。因为有很多东西没有办法进行结构化表示,比如软件出错,这时需要软件出错的屏幕截图,这张图比任何的语言描述都需要来得直接、生动,并且证据确凿让人无可辩驳,同时信息量大和完整。另外还有很多信息是保存在文件当中,比如PDF文件,数据库文件,可执行的文件和视频文件。文件的概念是很重要的,在linux的设计里,所有东西都是文件,甚至于网络的接口都可以看作一个文件。在以前一个公司里,就设置有一台共享的文件服务器,这台文件服务器是以Windows共享文件夹的方式来实现的,全公司的人

2021-04-19 11:49:55 37

原创 爬虫日记(53): Flask-WTF表单处理

前面已经学习了一个通用的表单处理,这样的方式是比较原始,也比较通用的,在一些要求不是很严格的地方是可以使用的,比如自己的测试网站。如果需要使用到一些公网,并且要求安全的地方,就需要使用另外一些表单处理方式,比如常用的flask-wtf库。为什么要使用这些库呢?其实原因比较简单,就是通用的表单处理有一些缺陷。比如你正在访问一个银行网站,并且已经登录进去,可以进行转账了。这时候你的好友给你发来了一个新闻网站的连接,你点击进去。由于这个新闻网站已经被别人攻击过,当你打开这个网站时,就会在浏览器进行运行,会运行一些

2021-04-18 21:00:17 65 1

原创 爬虫日记(52):Flask的通用表单处理

表单在Web开发里会经常遇到,因为这是收集用户输入数据的一种手段,也是最基本的交互工作方式之一。所以这种方式在开发人员里必须要掌握的,我们先从最原始的交互方式开始。<form> 元素HTML 表单用于收集用户输入。<form> 元素定义 HTML 表单:例子:<form>First name:<br><input type="text" name="firstname"><br>Last name..

2021-04-18 09:51:08 49

原创 爬虫日记(51):Flask的蓝图

在开发Web应用中,初期可能功能不多,采用一个单一的文件就可以解决了,随着功能的增加,把所有功能写到一个文件里,文件就会越来越大,无论修改BUG,还是后面增加新功能,都会觉得力不从心。这时候,就需要对写到一个文件里的功能进行重构,需要使用flask里的蓝图功能。可以把不同的功能模板分别写到不同的文件里去,分成不同的分类,降低各项功能模块之间的耦合度。从上图可以看到,在app类注册了两个蓝图,每个蓝图代表一个页面。简单来说,Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint

2021-04-17 19:15:27 42

原创 爬虫日记(50):Flask的类视图

前面学习了比较多,都是关于函数的编程,使用这种方式也是可以完成开发WEB网站的,不过flask还提供了另外一种方法,就是使用类视图的方式。那么为什么又要使用类视图的方式呢?难道用函数的方式不行吗?其实不是这样的,这两者之间没有替代的关系,这取决于开发人员的喜好了,有人喜欢使用函数式编程,有人喜欢使用面向对象编程,各有所长,也各有所短。使用C语言也照样开发出像linux这样的操作系统,所以根据自己的要求来定。由于要使用类的方式来响应路由的请求,很多人就会想到,直接使用前面的route装饰器来处理了,.

2021-04-16 20:27:35 89

原创 爬虫日记(49):Flask的模板继承

在开发网页中,往往发现一些东西是重复的,比如网页上面显示公司的LOGO代码,导航条,以及一些网页后面内容。这些公共的内容,怎么样来处理呢?如果使用最原始的做法,就是写一遍,所有地方进行拷贝。这是粗暴简单的操作手法,如果要聪明一点的,就是使用flask提供的模板继承技术。为什么说拷贝的方法不可取呢,因为拷贝之后,如果有一个地方被领导要修改了,那么有几十个网页都需要修改,这将是一个巨大的工作量,那么加班将会是家常便饭,经常会缺少与家人团聚的美好时光。要想使用模板继承,先来学习这个语法:{% ext.

2021-04-15 18:06:55 76 1

原创 爬虫日记(48):Flask的静态文件

虽然现在都是开发动态的网页,但是缺少不了静态的文件。比如网页里使用到的脚本文件、CSS文件和图片文件。因此flask框架里提供了怎么样来访问静态文件的方法,首先要在代码的目录下面创建下面的文件结构:/app.py/static /js /css /img/templates /index.html创建一个static文件夹,然后在下面分别创建js文件夹,它是用存放脚本相关的文件;创建css文件夹,它是用来保存CSS相关的样式文件;创建img文件夹,它是...

2021-04-15 09:49:25 81

原创 爬虫日记(47):Flask模板中的赋值语句

开发当中常常会遇到使用相同的数值,并且在不同的模板文件中共享,因此需一种手段来保存这些值,在flask模板里采用set和with语句来赋值一些常量。{% set navigation = [('index.html', 'Index'), ('about.html', 'About')] %}{% set key, value = call_something() %}第一行是声明一个列表常量,第二个是多个值赋值。语法:{% set 变量名='值' %}例子:<!D.

2021-04-14 17:31:23 95

原创 爬虫日记(46):Flask模板中的宏导入

对于一个有编程经验的开发人员来说,常常干这样一件事情,就是把一个比较大的代码文件进行分割,分成不同的小文件。为什么要这样做呢,是因为一个人无论多么聪明,多么有时间,多少有经验,但是还是无法处理超大的问题,超多的代码。所以人类有一个比较有效的工作经济,就叫做分治策略,把大的问题分解,把一个大的代码文件进行分解,变成一个一个小的文件。如果你去看一下linux内核的源码,会发现有很多小文件组成的。同理,我们开发一个WEB的应用,虽然没有linux内核那么复杂,但是相对于我们来说,还是很复杂的,因此在学习开发的时候

2021-04-14 16:01:46 76

原创 爬虫日记(45):Flask模板中的宏定义

我们学习编程语言,常常遇到复用的问题,同一个功能的代码,大家希望都是只想写一次,因为这样减少了维护代码,也能提高程序的运行效率。为什么这样说呢?因为CPU的缓存是有限的,如果调用一个功能的代码超出了缓存的大小,就需要触发CPU更新缓存,这样运行代码的效率就会低十倍左右。所以让相关的代码尽量在一起,就可以提高运行的效率。要这样处理,就得使用函数,复用函数的代码,也就是把一段使用次数两次或两次以上的代码抽象出来,这样就可以避免DRY的问题。在模板里,不能直接定义函数,因此采用了宏定义的方式来构造一些函数。.

2021-04-14 10:15:37 43

原创 爬虫日记(44):Flask模板中的过滤器

前面学习了向模板代码传送参数、if语句和for语句,已经可以处理很多种情况了,接着下来学习一个比较特别的功能,就是过滤器。顾名思义,过滤器就是过滤掉某些东西。比如一串小写的字符串,因为页面要显示为大写,那么怎么办呢?这时候常常有两种做法,一种是python代码里处理,也就是说把所有要输出大写的字符串在python代码里先进行变换成大写,然后再透过变量传送给模板,模板可以直接拿到就可以显示了。另外一种是不管变量的大小写了,直接把字符串传送给模板,让模板来处理。这种前后端都可以处理的工作,往往就是前后端开发人员

2021-04-13 08:46:57 80 1

原创 爬虫日记(43):Flask模板中的for语句

前面学习了在模板中嵌入判断语句,这样解决了按某些条件进行输出HTML的问题。其实我们还有很多数据是需要循环地输出,或者遍历地输出的,这时候就需要使用循环语句。因此在模板里也设计了循环语句,它的格式如下:<h1>Members</h1><ul>{% for user in users %} <li>{{ user.username|e }}</li>{% endfor %}</ul>与if语句同样的是使用{.

2021-04-12 17:23:55 68

原创 爬虫日记(42):Flask模板中的if语句

在Flask模板中也设计了一些控制语句,跟python的语句有点像,但是有一些是不一样的,所以还是要认真地学习一下。由于模板中可以传入变量,那么模板就可以根据变量的值为真或假来判断是否输出某部分HTML内容,这样就可以更改不同用户的页面,也可以根据不同浏览器来进行渲染,也可以根据不同平台来渲染,进而适应不一样的设备。jinja2中的if语句类似与Python的if语句,它也具有单分支,多分支等多种结构,不同的是,条件语句不需要使用冒号结尾,而结束控制语句,需要使用endif关键字。{% if .

2021-04-12 10:45:35 64

原创 爬虫日记(41):Flask的向模板中传送参数

前面一文已经学习了模板的重要性,以及为什么需要使用模板,并演示了模板的基本使用。不过,不知道你们有没有注意到,在这个例子里已经使用了参数,调用模板函数时是这样的:render_template('index.html', name={"name":"mysoft","name2":"caimouse"}, name1=["abc","https://mysoft.blog.csdn.net/"...

2021-04-11 21:10:05 69

原创 爬虫日记(40):Flask的模板介绍

前面学习了Flask实现一些网页内容返回,这些都是比较简单的内容,只有几句话的字符串,显然可以使用程序内部来构造。如果让你开发一个大一些的网站,显然使用这种方式就不合适了。并且还会经常容易出错,不知道你是否还记得使用尖括号<>来返回内容时,结果在浏览器里看不到它们,这是因为要显示这些样的字符,必须使用特别的表示,HTML或XML内部使用尖括号作为标签的识别。因此我们在程序内部去手工构造这些HTML,就会有点力不从心了,常常会遇到这种标签的误用。经过前面开发人员不断地探索,他们从不同的项.

2021-04-11 09:19:43 74

原创 爬虫日记(39):Flask的页面跳转和重定向

前面学习了URL传送参数,这是一个非常基本的工作,不过前面只是学习了字符串的传送,如果需要传送数据类型,比如int类型、float类型,又或者路径类型呢?这时只学习前面的知识就会发现有点不够用了,因此我们继续来补充这方面的知识,其实可以传送下面的类型:除了字符串类型之外,其它类型都需要使用转换器来说明:<converter:variable_name>因此就可以把上面的格式写成这样:<int:post_id> 整数类型<float: xy> 浮..

2021-04-10 21:59:37 73

原创 爬虫日记(38):Flask的URL传送参数

前面学习了Flask的Hello World例子,感觉到它的威力了,它不但简单,而且快捷地实现了。在开发的过程中,经常会碰到要从客户端,即是浏览器,向我们的服务器传送数据,即是我们的WEB应用。一般情况下,都会采用这两种方式:URL和表单。现在这里先来学习URL的方式,表单放到后面再学习。通过URL的一部分内容的改变,就可以向服务器提供变量的数据。如果数据比较少的情况下,一般采用URL的方式,不是采用表单。比如我们的网站有多个用户使用,可以这样让不同的用户来查看自己的页面:http://127.

2021-04-10 10:28:32 59

C++读写json文件

https://github.com/nlohmann/json 最好用的C++读写json库

2017-12-09

STM32F407VET6工程模板

玩转STM32里文章配置的代码,这里学习的第一个工程代码,可以作为后继开发的模板工程。

2019-03-14

python抓取天气并分析 实例源码

Python代码抓取获取天气预报信息源码讲解。这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。 python抓取广州天气并分析 实例源码

2017-08-28

实现numpy的C++库扩展

使用C++来扩展numpy里的数据计算,这时就需要使用numpy的扩展库功能了,下面就来提供一个使用C++编写numpy扩展库的模板,这样大家就要减少很多弯路,减少跌入坑里的成本。这个扩展库的模板是从mahotas库里抽取出来的,经过最大化的简化,这样更加容易理解,更方便学习。

2019-11-24

svm_hog_data.rar

使用到LineSVC里进行机器学习的训练数据,用来训练手写识别。 配套专栏文章使用,https://blog.csdn.net/caimouse/article/details/104599920。

2020-03-02

python web py入门配套源代码

python web py入门- 实现论坛,开发技术:后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS。

2018-02-23

国产8051模拟器

一款国产的8051模拟器(全部源代码) 本软件是一款8051模拟器,他的特点是可以模拟多处理器平台,在简单的多工作区间的界面上可以很方便的模拟8051处理器, 最重要的是这个单片机系统可以完全由你自己订制,你甚至可以随意创建自己的多单片机系统,什么SMP 基于串行总线的分布式系统,集群式系统,只要你能想到的,都可以办到,充分发挥你的想象力。现在1.0版本已经基本体现出了这种思想,在以后的版本中将使这一特性变的 更加强大!

2016-09-10

TestSel1.rar

爬虫日记(28):scrapy使用中间件调用浏览器 相关代码

2021-03-29

ItemDemo_ua.rar

爬虫日记(25):Scrapy 中设置随机 User-Agent 二 的配套代码

2021-03-26

爬虫日记 Imgfn1.rar

爬虫日记(23):用scrapy快速地爬取蜂鸟网图片 相关的项目代码

2021-03-24

ImgDemo1.rar

爬虫日记(22):最简单地抓取图片,仅5行代码 相关配套代码。

2021-03-23

ItemDemo3.rar

爬虫日记(21):使用Pipeline模块写入文件二 的配套代码。

2021-03-23

ItemDemo2.rar

爬虫日记(20):使用Pipeline模块写入文件 的例子

2021-03-22

ItemDemo.rar

实例使用Item对象,适用初学者,《爬虫日记》配套源码。

2021-03-21

GOOGLE的TPU论文

GOOGLE公开TPU的论文

2017-04-06

俄罗斯方块游戏开发

俄罗斯方块游戏开发培训里的可执行文件,让大家可以查看相关的结果。以便是否参加培训。

2016-11-30

wix3.11版本安装工具

wix3.11版本安装工具

2017-06-19

webpy演示例子1

webpy演示例子1, 用于配套文章相关资源。python web py入门(9)- 论坛首页的模板中模板 前面已经提到一个模板中可以套用另外一个模板,现在就来看看这个论坛基本布局模板是怎么样的?

2018-02-21

WIX制作C#应用程序安装包

WIX制作C#应用程序安装包

2016-05-26

WiX3.10版本安装工具

WiX3.10版本安装工具

2017-06-19

胶囊模型的代码

胶囊模型的代码在以下论文中使用: “Dynamic Routing between Capsules” by Sara Sabour, Nickolas Frosst, Geoffrey E. Hinton. 要求 TensorFlow ( 访问 http://www.tensorflow.org 了解如何安装和升级) NumPy (详见http://www.numpy.org/) GPU

2018-02-02

Milang 1.0.2

本项目主要开发、学习、讨论小语(milang)编程语言,它是以python语法为基础,然后改进它语法、增加直接生成机器码,混合C++的优点,增加基于寄存器的虚拟机实现。 代码下载和上传见: https://code.csdn.net/caimouse/milang

2014-06-02

selenium的浏览器驱动

目前有很多的银行网站,还是以IE为标准的浏览器,因此这里主要采用IE为测试的例子,在这里可以下载不同版本的浏览器驱动,可以是32位的,也可以是64位的,根据自己的需要下载不同的版本。在本文章里,下载的是2.35.3版本:IEDriverServer.exe,把它放在目录f:\temp\里面。

2016-06-14

milang 1.0.4

本项目主要开发 学习 讨论小语 milang 编程语言 它是以python语法为基础 然后改进它语法 增加直接生成机器码 混合C++的优点 增加基于寄存器的虚拟机实现

2014-07-13

duilib界面库20161116

更新为VC2015编译的duilib,持续重构代码,使用最新的C++14的语法。

2016-11-16

milang 1.0.3

本项目主要开发、学习、讨论小语(milang)编程语言,它是以python语法为基础,然后改进它语法、增加直接生成机器码,混合C++的优点,增加基于寄存器的虚拟机实现。

2014-06-07

mysql开发管理工具

mysql数据库的开发管理工具。

2016-07-12

pythoncn-3.4.3

1. 使用VS2012编译。 2. 修改在VC11.0的库下运行pythonw.exe出错误的BUG。

2015-05-04

duilib界面库

duilib界面库,长期维护的界面库,在WIN10和VS2012上编译和开发、测试通过。

2016-10-10

milang 1.0.5

本项目主要开发 学习 讨论小语 milang 编程语言 它是以python语法为基础 然后改进它语法 增加直接生成机器码 混合C++的优点 增加基于寄存器的虚拟机实现

2014-08-03

python-3.4.4

python 3.4的32位的windows版本

2016-07-01

手写识别的训练数据

MNIST训练数据

2017-03-10

duilib界面库20161017

duilib 界面库

2016-10-17

书《深度学习》

2015年,深度学习三大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton在最新的《Nature》杂志首次合作的发表综述文章《Deep Learning》。本文为该综述文章的中文译文,深入浅出地介绍了深度学习的基本原理,核心优势和未来展望。

2017-03-13

mysql-5.5.50-64

windows下的64位MYSQL的版本。

2016-07-10

protobuf 2.5

protobuf 2.5库代码和工具

2016-06-24

tinyxml2配套源码

在软件开发过程中,为了使软件有灵活的配置,特别像界面这样的配置,同时为了减轻重复开发的任务,需要把客户的个性化需求可以通过配置文件来修改,比如像界面的颜色配置,就可通过配置文件来修改,这时就可以采用XML文件来保存和修改这些参数配置。在不同软件之间进行通讯时,也可以采用XML协议来进行数据交换,特别像WEB服务的调用时,采用传送XML格式是基本的数据交换方式。基于这些任务的需求,需要软件开发人员会在C++里使用xml格式。

2016-06-27

protoc2.5执行文件

protoc执行文件

2016-06-24

深度强化学习论文

DQN的论文

2017-03-17

milang开发工具

组合了notepad和python 3.4的开发工具,可以集编辑和运行、结果查看为一体。

2014-05-24

caimouse的留言板

发表于 2020-01-02 最后回复 2020-05-14

开发大联盟,VC人员开放大聚会

发表于 2001-11-05 最后回复 2012-05-23

C++编译器源程序学习!!!!!!!!!!!!!!!!!1

发表于 2003-12-26 最后回复 2004-01-07

FastBT下载 1.0.3.66版 2003.12.25 放分 一小时结.

发表于 2003-12-26 最后回复 2003-12-26

发布最新版本FastBT 1.0.1.27 高兴放分

发表于 2003-11-21 最后回复 2003-12-10

有没有分析过传奇网络通迅?

发表于 2003-07-10 最后回复 2003-11-28

Visual Studio.net 2003 7cd 下载

发表于 2003-08-27 最后回复 2003-09-01

Visual Studio.net 2003 7cd 下载

发表于 2003-08-27 最后回复 2003-08-28

怎么样实现在资源管理器多一个盘号?

发表于 2003-07-24 最后回复 2003-07-31

深圳治安真差,我差点就被打死了!

发表于 2003-05-12 最后回复 2003-05-23

开放源码的P2P文件共享研究Gnucleus

发表于 2002-07-24 最后回复 2003-05-06

怎么样实现从播放器播放的声音录下来?

发表于 2003-03-11 最后回复 2003-03-19

QQ死机的BUG?不信你就试试了。

发表于 2003-02-20 最后回复 2003-02-26

大家把自己有的技能交流一下

发表于 2003-01-24 最后回复 2003-01-28

有不有程序员取这么好有GF啊?

发表于 2003-01-15 最后回复 2003-01-24

在C++BUILDER里怎么调试进入PASCAL?

发表于 2003-01-08 最后回复 2003-01-08

猜谜语送分

发表于 2003-01-07 最后回复 2003-01-07

操作系统源码分析网

发表于 2002-12-17 最后回复 2003-01-03

有人写过硬盘驱动程序吗?

发表于 2002-12-16 最后回复 2002-12-17

怎么样才能写出一个像TObject类CObject来?

发表于 2002-12-04 最后回复 2002-12-11

有空来我cbuilder论坛

发表于 2002-11-21 最后回复 2002-12-04

有空来我VC论坛

发表于 2002-11-25 最后回复 2002-11-26

开发DOS的操作系统,作为实时操作系统

发表于 2001-10-29 最后回复 2002-02-17

在局部网内用UDP通过代理服务器连接外面的人,怎么样用VC写通过代理呢?

发表于 2001-09-24 最后回复 2002-02-05

UDP 代理问题?

发表于 2002-01-24 最后回复 2002-01-24

怎么样设置像ICQ或OICQ这样服务器?

发表于 2001-12-29 最后回复 2001-12-29

我的钱哪去了?

发表于 2001-12-17 最后回复 2001-12-17

在VC中这个错误为什么出现的?

发表于 2001-11-30 最后回复 2001-12-13

谁能说出ICQ目录下各个DLL文件用处?给高分!!!!

发表于 2001-11-27 最后回复 2001-11-27

怎么样更新CLISTBOX

发表于 2001-11-14 最后回复 2001-11-14

谁有空就用C写个DOS操作系出来?XP可没有DOS啊

发表于 2001-10-26 最后回复 2001-11-13

为什么国内没有人写出像<<深入浅出MFC>>这样的好书

发表于 2001-11-08 最后回复 2001-11-08

用C++能写DOS操系统吗?

发表于 2001-10-31 最后回复 2001-10-31

我们能不能把NASM的使用手册译成中文吗

发表于 2001-10-30 最后回复 2001-10-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除