十一 22

使用nodejs模块PhantomJS制作爬虫之我们必须要懂的

使用nodejs模块PhantomJS进行页面自动化,因为PhantomJS可以加载和操纵网页,所以执行各种页面自动化任务是完美的。

DOM操作

由于脚本的执行就像在Web浏览器上运行一样,因此标准的DOM脚本CSS选择器可以正常工作。

以下useragent.js示例演示如何读取idtextContent的元素属性qua Continue reading

十一 22

nodejs模块 – phantomjs的简单爬虫应用实例

nodejs模块 – phantomjs的简单爬虫应用实例

PhantomJS是一个可以用JavaScript编写脚本的无头web浏览器。它可以在Windows、macOS、Linux和FreeBSD上运行。
它使用QtWebKit作为后端,为各种web标准(DOM处理、CSS选择器、JSON、Canvas和SVG)提供快速和本机支持。

安装phantomjs

安装Cheerio, Cheerio是一个服务器端基本实现Jquery核心功能的一个库

Continue reading

十一 21

Request模块让 Node.js http请求变得简单

Node.js的模块——request。有了这个模块,http请求变的超简单。

使用超简单

Request使用超简单,同时支持https和重定向。

任何响应都可以输出到文件流。 Continue reading

十一 19

thinkphp5.x nginx服务器伪静态配置方法

thinkphp5.x nginx服务器伪静态配置方法

 

十一 18

ThinkJS模型实例化简单应用

ThinkJS的文档只是粗略的看了一遍,具体使用还得到项目实践中来研究。

说一说它的模型实例化,刚开始的时候没弄明白它的机制。

环境:

ThinkJS version: 3.2.10

多模块目录:

Continue reading

十一 17

HTTP、TCP/IP、UDP、Socket、Socket长连接、Socket连接池

前言

​ 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之间的关系。

七层网络模型

​ 首先从网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)模型。自下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。所有有关通信的都离不开它,下面这张图片介绍了各层所对应的一些协议和硬件

119190082-5aba3da90a5aa

通过上图,我知道IP协议对应于网络层,TCP、UDP协议对应于传输层,而HTTP协议对应于应用层,OSI并没有Socket,那什么是Socket,后面我们将结合代码具体详细介绍。 Continue reading

十一 15

ThinkJS 3.0的安装及thinkjs命令的简单使用

ThinkJS 3.0

安装 ThinkJS 命令

如果安装很慢的话,可以尝试使用 taobao 的源进行安装。具体如下:

卸载旧版本命令

创建项目

执行 thinkjs new [project_name] 来创建项目(单模块),如: Continue reading

十一 11

NodeJS插件Crawler参数手册

Crawler参数手册

如果你想修改一些默认值,可以在构造 Crawler() 的时候配置相关的参数,此时的参数将在全局范围内生效。如果你只想对单个请求配置独立的参数,你可以在调用 queue() 函数时覆盖参数。

Crawler 使用了 request 库,所以 Crawler 可供配置的参数列表是 request 库的参数列表的超集,即 request 库中所有的配置在 Crawler 中均适用。

以下为所有参数: Continue reading

十一 10

从Github上淘来的爬虫框架

Python

python自然不用多说,拥有的爬虫框架数不胜数。

  • scrapy,大名鼎鼎的爬虫框架,功能强大,乃入门学习的必备良药。支持多种多样的配置特性,唯一可惜不支持分布式的特性,于是就诞生了scrapy-redis这个以redis为队列的分布式爬虫框架。
  • pyspider,应该是个华人写的爬虫框架,可支持的配置非常多,同时也支持分布式,只需要配置中间的消息队列就可以。
  • portia,可视化的爬虫框架,对于编程经验少的人来说相当适合学习。
  • xcrawler,轻量级的爬虫框架。个人很简易从读轻量级的爬虫框架的源代码入手,这样能够由浅入深,学地更有意思。
  • cola,也是很强大的分布式爬虫框架,只是可惜不支持python 3以上。
  • fetchman, 国人写的爬虫框架,采用grequests来并发请求。看过源代码,写的容易理解,所以对于新手来说很实用。
  • gain, 使用asyncio`来异步爬取的轻量级爬虫框架。代码很容易理解,利于学习。

Java

Java接触的不是很多,所以知道的爬虫框架不多。

  • webmagic,这个是国人写的爬虫框架,很好用,也很强大。源代码的阅读体验也不错,推荐写java的可以去熟悉熟悉。
  • crawler4j, 比较好的爬虫架构,对于学习和理解爬虫框架很有用。
  • SeimiCrawler, 分布式爬虫框架,也是受到scrapy启发。支持动态渲染的页面爬虫。
  • elves, 轻量级的爬虫框架,国人写的。易于学习和理解。

Node

node接触的更加不多,但是也淘到了不错的几个框架。

  • node-crawler,强大且流行。采用Cheerio这个包解析网页结构。
  • webster,高性能的NodeJs爬虫框架,可爬取动态渲染的内容(通过headless Chrome)。

C#

C#作为笔者除了Python以外比较熟悉的语言了。但是发现其爬虫框架少的可怜。哎,不禁叹息。

  • DotnetSpider,整体架构参照了WebMagicScrapy,是C#中比较强大的存在。目前已经支持.net core 2.0,所以,喜欢C#的可以去玩玩。还是比较不错的支持Entity Framework
  • WebCrawler,国人写的轻量级的爬虫框架。可以去学习学习~~~

Continue reading