0%

协同过滤

协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。

Mahout

Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

Mahout安装

1
$ git clone https://github.com/apache/mahout.git mahout

git clone速度慢怎么办?

配置ss代理,假设已有ss代理服务,则在本地安装shadowsocks客户端,开启ss代理。以下为终端shadowsocks客户端安装开启教程:

1
$ yum install python-pip
1
$ pip install shadowsocks
阅读全文 »

要在您的网站上启用HTTPS,您需要从证书颁发机构(Certificate Authority)(CA)获取证书(一种文件类型)。Let’s Encrypt就是一个证书颁发机构。为了从Let’s Encrypt获得您网站域名的证书,您必须证明对该域名的控制权。使用Let’s Encrypt,您可以使用使用ACME协议的软件来执行此操作,该协议通常在您的Web主机上运行。
建议大多数使用shell访问的人使用 Certbot ACME客户端。它可以自动执行证书颁发和安装,而不会停机。

Cerbot安装

在centos7上使用nginx情况下,certbot安装流程如下:

1
2
$ yum -y install yum-utils
$ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
1
$ sudo yum install certbot-nginx

具体安装流程可见:certbot homecertbot installation

Certbot生成证书

1
$ certbot certonly --nginx --nginx-server-root /path/to/nginx_server_root -d www.example.com -d example.com --email email_address --agree-tos
阅读全文 »

php可以通过curl扩展抓取页面数据,然后用preg_match/preg_match_all进行模式匹配或者使用DOM获取想要的数据。相关组件如下:
guzzle: 一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。可使用该组件发送HTTP请求。
DomCrawler:该组件简化了DOM操作,利用DOM提取需要获取的数据。

CURL

单线程:

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
// 启用时不将头文件的信息作为数据流输出。
curl_setopt($ch, CURLOPT_HEADER, 0);
// TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 抓取URL并把它传递给浏览器
// 成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 设置了 CURLOPT_RETURNTRANSFER 选项,函数执行成功时会返回执行的结果,失败时返回 FALSE 。
curl_exec($ch);

// 关闭cURL资源,并且释放系统资源
curl_close($ch);
?>

CURLOPT_XXX请参考:php curl_setopt

curl抓取页面时,建议设置CURLOPT_TIMEOUT,避免因网络问题造成请求时间过长。

常用的CURLOPT_XXX:

  • CURLOPT_URL: 需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。

  • CURLOPT_HEADER: 启用时会将头文件的信息作为数据流输出。(true/false)

阅读全文 »

为了安全性问题,很多网页会动态生成一些数据,当提交表单的时候会将这些数据提交服务端,然后在服务端进行校验。当遇到这类问题时,可以使用phantomjs或selenium模拟浏览器行为加载js脚本,获取动态数据。以京东模拟登陆(仅以学习为目的)为例:

京东模拟登陆

通过开发者工具Network分析网络请求数据可得京东登陆接口:
"京东登陆页面网络请求"

阅读全文 »