- 博客(2411)
- 资源 (40)
- 论坛 (34)
- 收藏
- 关注

原创 爬虫日记(1):为什么需要爬虫
随着时代的发展,从远古时代的刀耕火种迅速地进入现代的信息时代,既然称为信息时代,显然信息才是关键的东西,才是唯一最有价值的东西。好像说一个原子里,原子核不重要了,重要的是原子核外面的电子。因为电子可以自由地移动,而原子核一直留在原来的地方,除非通过物流系统才能移动。自从发现电子可以自由地移动,人们就慢慢地通过电子来传送信息。最开始发明的是电报,电报能传送的东西很简单,就是长和短,而通过长和短的组合来构造信息的基石,再从长和短中还原信息出来。在这段时间里,电报是通信的方式,但是它的爬虫并不缺少,那就是第三方破
2021-03-03 17:42:51
191
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
14
原创 爬虫日记(51):Flask的蓝图
在开发Web应用中,初期可能功能不多,采用一个单一的文件就可以解决了,随着功能的增加,把所有功能写到一个文件里,文件就会越来越大,无论修改BUG,还是后面增加新功能,都会觉得力不从心。这时候,就需要对写到一个文件里的功能进行重构,需要使用flask里的蓝图功能。可以把不同的功能模板分别写到不同的文件里去,分成不同的分类,降低各项功能模块之间的耦合度。从上图可以看到,在app类注册了两个蓝图,每个蓝图代表一个页面。简单来说,Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint
2021-04-17 19:15:27
25
原创 爬虫日记(50):Flask的类视图
前面学习了比较多,都是关于函数的编程,使用这种方式也是可以完成开发WEB网站的,不过flask还提供了另外一种方法,就是使用类视图的方式。那么为什么又要使用类视图的方式呢?难道用函数的方式不行吗?其实不是这样的,这两者之间没有替代的关系,这取决于开发人员的喜好了,有人喜欢使用函数式编程,有人喜欢使用面向对象编程,各有所长,也各有所短。使用C语言也照样开发出像linux这样的操作系统,所以根据自己的要求来定。由于要使用类的方式来响应路由的请求,很多人就会想到,直接使用前面的route装饰器来处理了,.
2021-04-16 20:27:35
41
原创 爬虫日记(49):Flask的模板继承
在开发网页中,往往发现一些东西是重复的,比如网页上面显示公司的LOGO代码,导航条,以及一些网页后面内容。这些公共的内容,怎么样来处理呢?如果使用最原始的做法,就是写一遍,所有地方进行拷贝。这是粗暴简单的操作手法,如果要聪明一点的,就是使用flask提供的模板继承技术。为什么说拷贝的方法不可取呢,因为拷贝之后,如果有一个地方被领导要修改了,那么有几十个网页都需要修改,这将是一个巨大的工作量,那么加班将会是家常便饭,经常会缺少与家人团聚的美好时光。要想使用模板继承,先来学习这个语法:{% ext.
2021-04-15 18:06:55
26
原创 爬虫日记(48):Flask的静态文件
虽然现在都是开发动态的网页,但是缺少不了静态的文件。比如网页里使用到的脚本文件、CSS文件和图片文件。因此flask框架里提供了怎么样来访问静态文件的方法,首先要在代码的目录下面创建下面的文件结构:/app.py/static /js /css /img/templates /index.html创建一个static文件夹,然后在下面分别创建js文件夹,它是用存放脚本相关的文件;创建css文件夹,它是用来保存CSS相关的样式文件;创建img文件夹,它是...
2021-04-15 09:49:25
31
原创 爬虫日记(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
33
原创 爬虫日记(46):Flask模板中的宏导入
对于一个有编程经验的开发人员来说,常常干这样一件事情,就是把一个比较大的代码文件进行分割,分成不同的小文件。为什么要这样做呢,是因为一个人无论多么聪明,多么有时间,多少有经验,但是还是无法处理超大的问题,超多的代码。所以人类有一个比较有效的工作经济,就叫做分治策略,把大的问题分解,把一个大的代码文件进行分解,变成一个一个小的文件。如果你去看一下linux内核的源码,会发现有很多小文件组成的。同理,我们开发一个WEB的应用,虽然没有linux内核那么复杂,但是相对于我们来说,还是很复杂的,因此在学习开发的时候
2021-04-14 16:01:46
32
原创 爬虫日记(45):Flask模板中的宏定义
我们学习编程语言,常常遇到复用的问题,同一个功能的代码,大家希望都是只想写一次,因为这样减少了维护代码,也能提高程序的运行效率。为什么这样说呢?因为CPU的缓存是有限的,如果调用一个功能的代码超出了缓存的大小,就需要触发CPU更新缓存,这样运行代码的效率就会低十倍左右。所以让相关的代码尽量在一起,就可以提高运行的效率。要这样处理,就得使用函数,复用函数的代码,也就是把一段使用次数两次或两次以上的代码抽象出来,这样就可以避免DRY的问题。在模板里,不能直接定义函数,因此采用了宏定义的方式来构造一些函数。.
2021-04-14 10:15:37
30
原创 爬虫日记(44):Flask模板中的过滤器
前面学习了向模板代码传送参数、if语句和for语句,已经可以处理很多种情况了,接着下来学习一个比较特别的功能,就是过滤器。顾名思义,过滤器就是过滤掉某些东西。比如一串小写的字符串,因为页面要显示为大写,那么怎么办呢?这时候常常有两种做法,一种是python代码里处理,也就是说把所有要输出大写的字符串在python代码里先进行变换成大写,然后再透过变量传送给模板,模板可以直接拿到就可以显示了。另外一种是不管变量的大小写了,直接把字符串传送给模板,让模板来处理。这种前后端都可以处理的工作,往往就是前后端开发人员
2021-04-13 08:46:57
50
原创 爬虫日记(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
37
原创 爬虫日记(42):Flask模板中的if语句
在Flask模板中也设计了一些控制语句,跟python的语句有点像,但是有一些是不一样的,所以还是要认真地学习一下。由于模板中可以传入变量,那么模板就可以根据变量的值为真或假来判断是否输出某部分HTML内容,这样就可以更改不同用户的页面,也可以根据不同浏览器来进行渲染,也可以根据不同平台来渲染,进而适应不一样的设备。jinja2中的if语句类似与Python的if语句,它也具有单分支,多分支等多种结构,不同的是,条件语句不需要使用冒号结尾,而结束控制语句,需要使用endif关键字。{% if .
2021-04-12 10:45:35
26
原创 爬虫日记(41):Flask的向模板中传送参数
前面一文已经学习了模板的重要性,以及为什么需要使用模板,并演示了模板的基本使用。不过,不知道你们有没有注意到,在这个例子里已经使用了参数,调用模板函数时是这样的:render_template('index.html', name={"name":"mysoft","name2":"caimouse"}, name1=["abc","https://mysoft.blog.csdn.net/"...
2021-04-11 21:10:05
39
原创 爬虫日记(40):Flask的模板介绍
前面学习了Flask实现一些网页内容返回,这些都是比较简单的内容,只有几句话的字符串,显然可以使用程序内部来构造。如果让你开发一个大一些的网站,显然使用这种方式就不合适了。并且还会经常容易出错,不知道你是否还记得使用尖括号<>来返回内容时,结果在浏览器里看不到它们,这是因为要显示这些样的字符,必须使用特别的表示,HTML或XML内部使用尖括号作为标签的识别。因此我们在程序内部去手工构造这些HTML,就会有点力不从心了,常常会遇到这种标签的误用。经过前面开发人员不断地探索,他们从不同的项.
2021-04-11 09:19:43
41
原创 爬虫日记(39):Flask的页面跳转和重定向
前面学习了URL传送参数,这是一个非常基本的工作,不过前面只是学习了字符串的传送,如果需要传送数据类型,比如int类型、float类型,又或者路径类型呢?这时只学习前面的知识就会发现有点不够用了,因此我们继续来补充这方面的知识,其实可以传送下面的类型:除了字符串类型之外,其它类型都需要使用转换器来说明:<converter:variable_name>因此就可以把上面的格式写成这样:<int:post_id> 整数类型<float: xy> 浮..
2021-04-10 21:59:37
46
原创 爬虫日记(38):Flask的URL传送参数
前面学习了Flask的Hello World例子,感觉到它的威力了,它不但简单,而且快捷地实现了。在开发的过程中,经常会碰到要从客户端,即是浏览器,向我们的服务器传送数据,即是我们的WEB应用。一般情况下,都会采用这两种方式:URL和表单。现在这里先来学习URL的方式,表单放到后面再学习。通过URL的一部分内容的改变,就可以向服务器提供变量的数据。如果数据比较少的情况下,一般采用URL的方式,不是采用表单。比如我们的网站有多个用户使用,可以这样让不同的用户来查看自己的页面:http://127.
2021-04-10 10:28:32
38
原创 爬虫日记(37):Flask的Helloworld
前面一文已经介绍了怎么样安装Flask,并且运行了它的第一个Web应用程序,可以通过浏览器来查看结果,虽然这个程序比较简单,但是也是一个完整的Web应用,可见现在的Web开发,对于一些简单的应用来说,可以很快就开发出来,因为它不需要自己构造客户端,而是使用浏览器作为客户端。它也不需要构造底层的服务器,因为它采用了现成的框架作为服务器的一部分。只需要我们编写业务逻辑部分,就可以完成一个应用程序的开发。因此,Web开发能够成为当下主流的应用模式,跟这种快速、低成本的开发有很大的关系。在前面的例子里.
2021-04-09 17:55:57
47
原创 保持成长的三把钥匙:自律、自得和自省
保持成长的三把钥匙:自律、自得和自省1第一把钥匙,是自律。网上看到这样一个问题:怎么避免成为一个碌碌无为的人?有个网友答:“只要不随波逐流,就已经成功了一半。不能看别人吃完饭就追剧,自己也懒得运动;不能看别人周末在家玩一天手机,自己也丢掉手里的书,白白耗掉一整天。”一天天放纵自己,到后来身材走样、大脑一片空白;每天过得浑浑噩噩,只会不断耗尽对生活的热情。曾听过这样一句话:“我并不期待人生可以过得很顺利,但我希望碰到人生难关的时候,自己可以是它的对手。”而想要成长为一个可以直面难关的人,首先
2021-04-09 10:12:07
121
2
原创 爬虫日记(36):Flask的安装
在我们学习爬虫过程中,由于数据抓取成功之后,往往不是结束,而是一个新的开始,因为数据还需要展现出来,或者通过WEB的方式向外发布,又者向下一个职能部门提供浏览的工作。因此学习一个简单的Web应用开发是必要的,也是比较基础的工作。2004年,目前最流行的WEB框架Django诞生。2010年,另一个流行的轻量级WEB框架Flask诞生。Django是一个WEB解决方案“全家桶”,其功能大而全,包含了几乎所有Web开发相关的组件和功能,它可以大大节省开发者在基础组件、选型、适配等方面的时间和精力;而F.
2021-04-08 10:44:46
60
原创 爬虫日记(35):抓取磁力链接
如果你是一个喜欢下载高清影视的观众,那么你对磁力链接并不会陌生。因为它可以带来几十G的数据,一般的网站不具备这个条件,那是数据量太大了。但是磁力链接就可以提供这个海量的数据,因为它是保存在世界各个用户的电脑里面,共享的是全世界用户的硬盘,这个容量之大,是无法想象的。现在的网盘离线下载功能非常方便,同步资料,异地下载资料管理,而且不怕硬盘损坏导致资料丢失,所以网盘被越来越多人喜爱。而网盘往往要使用到离线下载,离线的绝大多数是磁力链接。那什么是磁力链接呢?一般以magnet:?xt=urn:btih:.
2021-04-07 17:57:36
68
原创 爬虫日记(34):爬虫的基本数据库Redis
前面学习了mongodb数据库,这个数据库有很好的优点,也支持分布式部署,还支持大数据保存,这是一个很好用的数据库。不过,有时候我们在开发爬虫的过程中,会遇到这样一种场景,比如我们去抓取一个新闻网站,如果不断地去网站上抓取所有数据,必然效率低下,另外也会造成别人的网站服务降低,导致各大网站非常讨厌爬虫。肯定这种不断地从原网站下载的方法是不合适的,因此我们必须改变这种做法,从而需要使用redis数据库来解决这个问题。这个又是怎么样说呢?其实这个方法比较常见的方式,比如你去下载网站的数据,可以先缓存起来,然后就
2021-04-03 09:30:28
66
原创 爬虫日记(33):爬虫的基本数据库MongoDB
前面我们学习了不少例子,都是把网页上非结构化的数据转换为结构化的数据保存,演示上基本上都是保存为json文件,没有其它的保存方式了。其实我们需要使用一个数据库来保存,因为爬取的数据多了之后,就需要跨服务器共享,这时再使用文件,就会有点麻烦。当然还是可以使用文件的方式,比如使用FTP来传送。在爬虫看来,最常使用的是 MongoDB数据库,因为MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB是一个基于分布式文件存储的数据库。由C++语言编
2021-04-02 16:40:07
48
原创 当前流行语总结
随着时代的进步,人们使用的语言也在进步,如果我们不能跟上流行语的节奏,往往就会看到新闻看不懂,听大佬而听不懂在说什么。因此多关注一下流行语,也是非常好的事情。下面这张图来源于CSDN的大佬,先上图为快,以 的进步,人们使用的语言也在进步,如果我们不能跟上流行语的节奏,往往就会看到新闻看不懂,听大佬而听不懂在说什么。因此多关注一下流行语,也是非常好的事情。下面这张图来源于CSDN的大佬,先上图为快,以飨读者:在这里使用到的大体流行语,如下:行业 通过 达到 采用 打法达成 作为 产品.
2021-04-02 08:39:29
44
原创 爬虫日记(32):使用FormRequest获取豆瓣电影数据
前面发送的请求,都是使用Request对象来发送,这是一般的请求对象,但是除了这些请求之外,其实还有表单的请求,这时再使用这个请求来发送,就比较麻烦一些,需要使用Request类的子类FormRequest来发送。豆瓣网上有很多电影评价,在上面会显示电影的名称和分数。由于我们都是电影的粉丝,常常根据电影上的评分来选择观看电影的顺序,毕竟人的生命是有限的,总是想在有限的时间内看到大家喜欢的内容,这样大家才讨论共同话题,才能不与社会脱节。因此,我们需要一个工具,把豆瓣上的电影标题和评分抓取下来,然后发.
2021-03-31 18:38:30
51
原创 爬虫日记(31):演练抓取cnblogs首页的内容
前面学习了比较多内容,也学习了比较实用的知识,不过还是需要实践才能把知识变为自己的知识。本文来练习一下抓取cnblogs首页的内容,虽然内容简单,但是整个过程还是比较复杂的。首先我们来创建一个scrapy工程,使用下面的命令:scrapy startproject Testcnblogs然后我们进入目录Testcnblogs下面,再执行下面的命令来生成一个蜘蛛类:scrapy genspider cnblog www.cnblogs.com通过上面的两步就可以把工程创建好了。..
2021-03-30 18:45:34
66
原创 爬虫日记(30):理解Spider Middleware中间件
前面学习了很多下载的中间件,并且也非常管用,可以随机地更换UA,更换代理,使用浏览器下载数据等等,这样可以向反爬的网站进行获得数据,又或者向JS渲染网页进行数据获取。这些中间件是非常管用的,也是开发爬虫的基本手段。接着下来需要理解一下蜘蛛类与引擎之间的中间件--Spider Middleware,也叫spider 中间件。在框架图里处于如下位置:从上图可见, spider中间件主要处理第1步请求的内容,也可以处理第6步的回应内容,还可以处理第7步产出的Item对象等等。Engine从Down
2021-03-30 10:32:49
44
原创 爬虫日记(29):随机更换scrapy的代理IP地址
前面学习了怎么样验证代理IP地址的有效性,这样就可以通过代理池的数据库来进行筛选出有效的IP地址出来。接着就可以利用这些代理IP地址进行随机更换,达到模拟不同人员访问同一个网站的目的。那么我们怎么样才能随机地更换scrapy的代理IP地址呢?基于前面的面向对象的设计思路,我们一般不要去修改原来爬虫项目的代码,采用插入中间件的方式是最佳的方法。因此,我们添加一个随机中间件来达到这个目的,这个中间件与前面学习过随机更换UA是差不多。我们先来创建一个测试的工程,使用下面的命令:scrapy star.
2021-03-29 18:23:58
160
原创 爬虫日记(28):scrapy使用中间件调用浏览器
前面已经学习过怎么样使用Python + selenium + webdriver + chrome方案来抓取数据,现在来更进一步学习。因为scrapy一般情况下只适合抓取在服务器端静态生成的网页,而不适合在客户端动态生成的网页。为什么这样说呢,这个就要了解目前WEB开发的两种机制,一种叫做服务端渲染,一种叫做客户端渲染。服务端渲染和客户端渲染本质都是字符串拼接;服务端渲染:在客户端发起请求后,在服务端把数据查询的结果嵌套在html,然后把整个包发给客户端进行渲染,这当中只会有一次请求。客.
2021-03-29 10:11:10
48
原创 爬虫日记(27):通过浏览器抓取数据
昨天测试一个网站,它需要SSL连接,并且需要SSL验证,这样对于采用scrapy或requests库来说,都比较麻烦,很容易就出错,比如下面的例子:#爬虫日记-蔡军生(qq:9073204)#https://mysoft.blog.csdn.net/#2020-03-26import requestsurl = 'https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list'try:...
2021-03-27 22:41:33
86
1
原创 爬虫日记(26):使用scrapy检验代理是否有效
在开发爬虫的过程中,往往会遇到爬虫过一段时间就会失效,所谓的失效就是前面跑得好好的,突然就开始抓取不到数据了,导致被老板一顿骂。虽然失效的原因有很多,比如前说的UA被别人识别了,又或者别人的网站真的出错了。但是往往不是这几个原因,而是对方识别出来你的IP地址,对你进行一轮升级打击了。为了继续地能搜索到数据,那么别无它法,只能使用“狡兔三窟”这招了。也就是说,你要隐藏你的自己的IP地址,或者说采用其它IP地址作为跳板了。这就是所说的代理大法。如下:由这个图可知,客户端再向服务器服务连接,不再.
2021-03-27 10:23:53
68
原创 爬虫日记(25):Scrapy 中设置随机 User-Agent 二
前面学习了怎么样显示下载请求里的UA,也学习了怎么样在settings.py里一次性地设置UA,这样可以避免没有UA被别人BAN住。不过,被别人封锁还是会有的,因为你只有一个UA,按照正常的情况来说,一个UA不可能频繁地下载一个网站的内容。因此只使用一个UA来访问网站,被挂掉的可能性非常大。那么怎么样破解这种情况呢?可以模拟多个UA来访问,对啊,这才是正确的思路。下面就来学习怎么让scrapy每次访问时,都可以随机地设置UA。由scrapy框架可知,settings.py里的代码只是运行一遍,就是.
2021-03-26 16:47:58
79
1
原创 爬虫日记(24):Scrapy 中设置随机 User-Agent
在开发爬虫过程中,经常会发现反爬措施非常重要,其中设置随机 User-Agent 就是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单,本文就对这些方法进行学习。最近使用 Scrapy 爬一个网站,遇到了网站反爬的情况,于是开始搜索一些反爬措施,了解到设置随机 UA 来伪装请求头是一种常用的方式,这能够做到一定程度上避免网站直接识别出你是一个爬虫从而封掉你。设置随机 UA 的方法有挺多种,有的需要好多行代码,有的却只需要一行代码就搞定了。user agent是指.
2021-03-25 17:24:06
67
原创 爬虫日记(23):用scrapy快速地爬取蜂鸟网图片
前面的例子只使用几行代码,就可以快捷地下载了图片,这是使用工具的进步,也是时代的进步,更是我们思想的进步。因为商业的社会,快速地变现才能生存,才能更进一步去开发和研发新的东西。我们知道基础的重要,但是如果没有商业的能力,又怎么请得起人才来研究和开发呢?可见我们需要快速地跟进,快速地去变现自己的梦想,这样才能快速地走在前头,吃上一口饭,否则就会饿死在开发的路上。看到网上有很多分析蜂鸟网图片网站,http://image.fengniao.com/ ,蜂鸟一个摄影大牛聚集的地方。但是他们采用的工具还是.
2021-03-24 10:59:15
56
原创 爬虫日记(22):最简单地抓取图片,仅5行代码
在互联网上有很多种类的数据,比如有文字、图片、视频、音频等等。最早的互联网,基本上都是以文字为主的世界,随着宽带的到来,慢慢就增加了图片,最后增加了视频和音频。虽然后面这两项也应用很多,但是互联网上最为方便的还是文字和图片。为什么会这样呢?关键问题还是在于它们方便,快捷。比如文字占用的带宽最少,表达最清晰。另外图片就排在第二位了,很多产品展示都是使用图片,因为它比视频也省流量,展示出来的速度比较快。前面所有例子都是演示文本的抓取,在本文里将来演示一个使用scrapy来下载图片的例子,使用scrap.
2021-03-23 16:45:53
90
原创 爬虫日记(21):使用Pipeline模块写入文件二
前面学习了Pipeline模块写入文件,这个例子非常简单,一学就会,不过这个例子也有一个重要的缺陷,对于一般的数据量也许感觉不出来,如果对于数百万,或者数千万的量级就会体现出来。不知道聪明的你有没有发现出来呢?下面来看一下这个流程图:在这个流程图里,可以发现当连接有数百万个时,会把数据源源不断地传送到Item管道类,这样在process_item函数就不断收到处理的数据项:class ItemdemoPipeline: def process_item(self, item, sp...
2021-03-23 10:00:19
54
原创 爬虫日记(20):使用Pipeline模块写入文件
前面学习了Item对象,知道怎么样把数据从一些散乱的网页里收集到,变成我们需要的结构化数据,这是一个伟大的进步,从无序变成有序。其实大自然往往是把有序变成无序,比如一片菜园,如果无人打理它,经历一段时间之后就会成杂草众生,这是大自然的选择。但是我们人类往往是反自然而存在的,选择了种各种粮食,维护各种果树,清除杂草,才能有我们的粮食存在。同样道理,我们需要对收集到结构化的数据进一步处理,毕竟各种数据还是一片杂乱众生的果树园,需要去掉杂草,才能保留果树。因此Pipeline模块就是用来实现这个目的。在.
2021-03-22 17:50:24
53
原创 爬虫日记(19):实例使用Item对象
前面学习了scrapy基本操作,基本概念,以及整体的框架等等,还学习了命令行的操作,这些都是基础知识,才能更进一步操作,才能理解后面的例子的内容。不过,刚刚学习这些概念,感觉总是有一点模糊,总觉得自己与实践之间有一层薄纱。再次来强调一次,计算机科学是一门实践的科学。如果一个人没有编写过程序,他就说他是计算机大师级的人物,千万不要相信。因为没有编写程序,怎么会理解程序的开发过程,怎么样学会处理在调试程序过程中的代码错误。因此,很多大公司面试都是让面试人员手写一段代码,这样就可以区分应聘人员是否写过代.
2021-03-21 17:31:36
58
原创 爬虫日记(18):setting的基本配置
在刚刚开始学习爬虫的时候,对什么都感兴趣,都想进行一次抓取的行动。一顿操作之后,发现爬虫连接不上网站了,百思不得解时,才发现原来被网站BAN掉了。被BAN就是爬虫被网站封杀了的意思。显然很多网站对爬虫是不太欢迎的,特别是网站的所有者。因为爬虫常常过快地连接网站,导致网站不能提供正常的访问。因此,编写爬虫一定要放慢爬行的速度,让网站所有者认为这是一种正常的访问,即使知道你是爬虫,只要不影响正常访问,也会网开一面的。导致爬行速度过快的爬虫,往往就在初学者中,因为他们根本就没有学习过爬虫的配置,也因为很多爬虫的书
2021-03-20 17:56:25
68
1
原创 爬虫日记(17):scrapy的Item对象
我们知道为什么要写爬虫,因为网上有很多有用的信息,但是这些信息是非结构化的,散乱地分布的,数据非常巨大的。可以把这些数据当作原油,正等待我们去开采,在开采之后还需要进行一番炼油,才能把石油应用到各行各业。同理,网上这么有用的数据,需要进行各种样的处理,才可以应用到我们实际工作和生活中去。在数据抽取的过程中,我们发现原来网络上的数据是非结构化的。可见第一个处理就是把数据进行结构化的表示,才可以进行下一步处理。所谓结构化,是指将逐渐积累起来的知识加以归纳和整理,使之条理化、纲领化,做到纲举目张。知识是.
2021-03-19 18:30:11
51
原创 爬虫日记(16):scrapy特殊功能的蜘蛛类
当你开发比较多爬虫之后,会发现有一些功能是相通的,比如网站地图的爬取,XML源的数据抓取,CSV文件的抓取。scrapy框架提供了一些特殊功能的类来处理这种情况,这样我们再在上面开发,就可以省时省力了,达到四两拨千斤的效果。下面立即就来学习它们,学会了就可以应用到自己的工程里去。主要有蜘蛛类CrawlSpider、XMLFeedSpider、CSVFeedSpider、 SitemapSpider。在学习过程中,我们需要使用一些辅助数据结构,就是定义item对象TestItem,使用它来保存抓.
2021-03-18 16:54:11
55
国产8051模拟器
2016-09-10
python抓取天气并分析 实例源码
2017-08-28
python web py入门配套源代码
2018-02-23
实现numpy的C++库扩展
2019-11-24
svm_hog_data.rar
2020-03-02
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
Milang 1.0.2
2014-06-02
selenium的浏览器驱动
2016-06-14
milang 1.0.4
2014-07-13
milang 1.0.3
2014-06-07
milang 1.0.5
2014-08-03
书《深度学习》
2017-03-13
tinyxml2配套源码
2016-06-27
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的粉丝