天天看点

数据的采集

(一)采集原理分析

数据采集是指获取指定网站的内容,之后将其存入数据库中,采集步骤如下:

第1步:获取指定网址的数据

http://www.qidian.com?id=1&articleid=6

获取数据可以使用如下函数:

(1)file_get_content()函数

(2)fopen()函数、fread()函数

(3)curl()函数

(4)snoopy类

第2步:提取所需内容,使用preg_match_all()函数获取匹配的数据

使用正则表达式获取需要采集的特定内容。

第3步:分类存储至数据库表中(入库)

第4步:从数据库中读取数据

第5步:展示读取出的数据

(二)正则表达式

使用正则表达式可以匹配、检索字符串。

r e g = ’ / … . reg=’/^…. reg=’/…./’;

KaTeX parse error: Expected 'EOF', got '#' at position 6: reg=’#̲^….#’;

1.量词

  • 匹配任何至少包含一个前导字符串
  • 匹配任何包含零个或多个前导字符串
  • 匹配任何包含零个或一个前导字符串
  • 匹配任意字符串
  • {x} 匹配任何包含x 个的前导字符串 /y{3}/ yyy
  • {x,y} 匹配任何包含x 到y 个前导字符串 /y{2,5}/
  • {x,} 匹配任何包含至少x 个前导字符串 /y{2,}/
  • $ 匹配字符串的行尾 /abc[0-9]$/
  • ^ 匹配字符串的行首
  • | 匹配字符串的左边或者右边(或)
  • ()包围一个字符分组或定义个反引用,可以使用$1,$2 提取 ([0-9]{3}-[0-9]{8})+

    *可以匹配任意字符串(因为.匹配任意字符,*表示任意个)

    2.元字符

  • [a-z] 匹配任何包含小写字母a-z 的字符串
  • [c-g] 匹配c,d,e,f,g [3-7]
  • [A-Z] 匹配任何包含大写字母A-Z 的字符串
  • [0-9] 匹配任何包含数字0-9 的字符串
  • [bek] 匹配任何包含小写字母b、e、k的字符串,只要字符串中含有b、e、k中的任意一个就算匹配到 goo[bek]d
  • [^bek] 只要有不含b、e、k的字符都能匹配
  • [a-zA-Z0-9_] 匹配任何包含a-zA-Z0-9 和下划线的字符串
  • \w 匹配任何包含a-zA-Z0-9 和下划线的字符串(同上)
  • \W 匹配任何没有下划线和字母数字的字符串,和\w相反
  • \d 匹配任何数字字符,和[0-9]相同
  • \D 匹配任何非数字字符,和[^0-9]相同
  • \s 匹配任何空白字符
  • \S 匹配任何非空白字符
  • \b 匹配是否到达了单词边界 /abc\b/ helloabcgood
  • \B 匹配是否没有达到单词边界
  • \ 匹配正则中的特殊字符

    3.修饰符

    语法:修饰符放在“/”的后面 /\w/i

  • i 完成不区分大小写的搜索
  • m 在匹配首内容或者尾内容时候采用多行识别匹配
  • x 忽略正则中的空白
  • A 强制从头开始匹配
  • U 禁止贪婪匹配只跟踪到最近的一个匹配符并结束 /xo*/U xoooobc

    4.正则相关函数

  • preg_match(’/正则表达式/’ , 要处理的字符串);
  • 匹配到一次就终止继续匹配,返回1;
  • 如果没有匹配到,就一直向后找,直到字符串的末尾,如果仍然没找到,返回0。
数据的采集

匹配邮箱

数据的采集
  • preg_match_all(’/正则表达式/’,字符串,$arr)
  • preg_match_all()搜索字符串所有匹配的结果,将所有匹配到的字符串放到$arr数组中。
数据的采集
  • preg_replace(’/正则表达式/’, ‘字符串’, $str);
  • 将$str中匹配正则规则的内容用指定字符串替换。

(三)采集入库

采集网页中列表的标题和链接,获取后存入数据库。

数据的采集
数据的采集

(四)Snoopy

数据的采集
数据的采集

(五)snoopy类实现数据采集

output()函数的功能是格式化输出数组数据

数据的采集

fetch()方法

数据的采集

Fetchtext()、fetchlinks()、fetchform()方法

数据的采集

(六)Snoopy实现表单提交和模拟登陆

数据的采集

(七)Snoopy实现图片下载

数据的采集

(八)cURL

1.Client URL库

数据的采集

2.开启curl扩展

数据的采集

3.使用cURL完成请求的四步

第1步:初始化资源 $ch = curl_init();

第2步: 设置相关的参数 curl_setopt()

第3步: 发送请求 curl_exec($ch)

第4部:关闭资源 curl_close($ch);

4.封装cURL函数

封装POST请求

数据的采集

封装GET请求

数据的采集

POST请求与GET请求相结合

数据的采集

5.使用cURL函数提交请求

数据的采集

希望在这里可以给大家提供一些帮助

继续阅读