使用nodejs模块PhantomJS进行页面自动化,因为PhantomJS可以加载和操纵网页,所以执行各种页面自动化任务是完美的。
DOM操作
由于脚本的执行就像在Web浏览器上运行一样,因此标准的DOM脚本和CSS选择器可以正常工作。
以下useragent.js
示例演示如何读取id为textContent
的元素的属性:qua Continue reading
使用nodejs模块PhantomJS进行页面自动化,因为PhantomJS可以加载和操纵网页,所以执行各种页面自动化任务是完美的。
由于脚本的执行就像在Web浏览器上运行一样,因此标准的DOM脚本和CSS选择器可以正常工作。
以下useragent.js
示例演示如何读取id为textContent
的元素的属性:qua Continue reading
nodejs模块 – phantomjs的简单爬虫应用实例
PhantomJS是一个可以用JavaScript编写脚本的无头web浏览器。它可以在Windows、macOS、Linux和FreeBSD上运行。
它使用QtWebKit作为后端,为各种web标准(DOM处理、CSS选择器、JSON、Canvas和SVG)提供快速和本机支持。
安装phantomjs
0 |
npm i phantom --save-dev |
安装Cheerio, Cheerio是一个服务器端基本实现Jquery核心功能的一个库
0 |
npm i cheerio --save-dev |
Node.js的模块——request。有了这个模块,http请求变的超简单。
Request使用超简单,同时支持https和重定向。
0 1 2 3 4 5 6 |
var request = require('request'); request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 打印google首页 } }) |
任何响应都可以输出到文件流。 Continue reading
thinkphp5.x nginx服务器伪静态配置方法
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
server { listen 80; server_name **.com; root "C:/wwwroot/**/public"; location / { index index.html index.htm index.php default.php; //重点就是加入下面这个if if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } } location ~ .php(.*)$ { fastcgi_pass 127.0.0.1:18158; fastcgi_index index.html; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } } |
ThinkJS的文档只是粗略的看了一遍,具体使用还得到项目实践中来研究。
说一说它的模型实例化,刚开始的时候没弄明白它的机制。
环境:
ThinkJS version: 3.2.10
多模块目录:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|... |-- src | |-- ... | |-- home | | |-- ... | | |-- controller | | | |-- ... | | | |-- index.js | | | |-- ... | | |-- model | | | |-- ... | | | |-- user.js | | | |-- ... | |-- ... |... |
作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池
等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之间的关系。
首先从网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)
模型。自下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。所有有关通信的都离不开它,下面这张图片介绍了各层所对应的一些协议和硬件
通过上图,我知道IP协议对应于网络层,TCP、UDP协议对应于传输层,而HTTP协议对应于应用层,OSI并没有Socket,那什么是Socket,后面我们将结合代码具体详细介绍。 Continue reading
配置eslint
ESLint 的配置分为六大块,分别是: Continue reading
ThinkJS 3.0
0 |
$ npm install -g think-cli |
如果安装很慢的话,可以尝试使用 taobao 的源进行安装。具体如下:
0 |
npm install -g think-cli --registry=https://registry.npm.taobao.org --verbose |
0 |
$ npm uninstall -g thinkjs |
执行 thinkjs new [project_name]
来创建项目(单模块),如: Continue reading
Crawler参数手册
如果你想修改一些默认值,可以在构造 Crawler()
的时候配置相关的参数,此时的参数将在全局范围内生效。如果你只想对单个请求配置独立的参数,你可以在调用 queue()
函数时覆盖参数。
Crawler
使用了 request
库,所以 Crawler
可供配置的参数列表是 request
库的参数列表的超集,即 request
库中所有的配置在 Crawler
中均适用。
以下为所有参数: Continue reading
python
自然不用多说,拥有的爬虫框架数不胜数。
redis
为队列的分布式爬虫框架。python 3
以上。
asyncio
`来异步爬取的轻量级爬虫框架。代码很容易理解,利于学习。Java
接触的不是很多,所以知道的爬虫框架不多。
java
的可以去熟悉熟悉。scrapy
启发。支持动态渲染的页面爬虫。node
接触的更加不多,但是也淘到了不错的几个框架。
Cheerio
这个包解析网页结构。NodeJs
爬虫框架,可爬取动态渲染的内容(通过headless Chrome
)。C#
作为笔者除了Python
以外比较熟悉的语言了。但是发现其爬虫框架少的可怜。哎,不禁叹息。
WebMagic
和Scrapy
,是C#
中比较强大的存在。目前已经支持.net core 2.0
,所以,喜欢C#
的可以去玩玩。还是比较不错的支持Entity Framework
。