php正则函数抓取网页连接(PHP是什么东西?PHP的爬虫有什么用?Python)

优采云 发布时间: 2021-11-14 07:09

  php正则函数抓取网页连接(PHP是什么东西?PHP的爬虫有什么用?Python)

  一、什么是PHP?

  PHP(外文名:PHP:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用的开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,应用广泛,主要适用于Web开发领域。PHP 的独特语法是 C、Java、Perl 和 PHP 自己语法的混合。它可以比 CGI 或 Perl 更快地执行动态网页。与其他编程语言相比,PHP将程序嵌入到HTML(标准通用标记语言下的应用程序)文档中执行,执行效率远高于完全生成HTML标记的CGI;PHP 也可以执行编译后的代码。编译可以实现加密和优化代码执行,使代码运行速度更快。

  二、爬虫有什么用?

  爬虫有什么用?先说一下什么是爬虫。我认为爬虫是一个网络信息采集程序。可能我自己的理解有误。请纠正我。由于爬虫是网络信息采集程序,所以用来采集信息,采集的信息在网络上。如果你还不知道爬虫的用处,我给你举几个爬虫应用的例子:搜索引擎需要爬虫来采集网络信息供人们搜索;大数据数据,数据从何而来?可以通过爬虫在网络中进行爬取(采集)。

  三、听到爬虫一般都会想到Python,但是为什么我用PHP而不是Python呢?

  Python 老实说,我不懂 Python。(我真的不懂Python,我想知道也许你得去百度,因为我真的不懂Python。)我一直认为用PHP写东西时,你只需要想到一个算法程序并且您不必考虑太多的数据类型。问题。PHP 的语法与其他编程语言类似,即使您一开始不了解 PHP,也可以立即上手。PHP 的语法与其他编程语言类似,即使您一开始不了解 PHP,也可以立即上手。这个想法是错误的。) 其实我也是一个PHP初学者,想通过写点东西来提高自己的水平。(以下代码可能让你觉得不够规范,请指正,谢谢。)

  四、PHP爬虫第一步

  PHP爬虫的第一步,第一步……当然,第一步是搭建PHP的运行环境。PHP如何在没有环境的情况下运行?就像鱼离不开水一样。(我的知识不够,可能我给的鱼例子不够好,请见谅。)我在Windows系统下使用WAMP,在Linux系统下使用LNMP或LAMP。

  WAMP:Windows Apache Mysql PHP

  灯:Linux Apache Mysql PHP

  LNMP:Linux Nginx Mysql PHP

  Apache 和 Nginx 是 Web 服务器软件。

  Apache 或 Nginx、Mysql 和 PHP 是 PHP Web 的基本配置环境。网上有PHP Web环境的安装包。这些安装包使用起来非常方便,不需要安装和配置一切。但是如果你担心这些集成安装包的安全性,你可以去这些程序的官网下载,然后在网上找配置教程。(说真的,我真的不想一个人做,我觉得很麻烦。)

  五、 PHP爬虫第二步

  (感觉废话很多,应该马上来一段代码!!!)

  爬虫网络的核心功能已经写好了。为什么说爬虫的核心功能是几行代码写出来的?估计有人已经明白了。爬虫其实就是一个数据采集程序,上面几行代码其实是可以获取数据的,所以爬虫的核心功能已经写好了。可能有人会说:“你太乱了!有什么用?” 虽然我很乱,但请不要告诉我,让我装个X。(再废话两行,抱歉。)

  实际上,爬虫的用途取决于您希望它做什么。就像我前几天为了好玩写了一个搜索引擎网站,当然网站是很好的,结果排序不规则,很多都没有。我的搜索引擎爬虫就是写一个适合搜索引擎的爬虫。所以为了方便起见,我将以搜索引擎的爬虫为目标来说明。当然,我的搜索引擎的爬虫还不够完善。不完美的地方将由你来创造和完善。

  六、 搜索引擎爬虫的局限性

  有时搜索引擎的爬虫不是无法从网站的页面中获取页面源代码,而是有robot.txt文件。这个文件的网站表示站主不希望爬虫爬取页面源代码。. (但如果你只是想得到它,即使你拥有它也会爬行!)

  我的搜索引擎的爬虫其实有很多不足导致的局限性。例如,可能因为无法运行JS脚本而无法获取页面的源代码。或者网站有反爬虫机制,防止获取页面源代码。网站带有反爬虫机制就像:知乎,知乎就是带有反爬虫机制的网站。

  七、以搜索引擎爬虫为例,准备写爬虫需要什么

  PHP写基本正则表达式(也可以用Xpath,抱歉,我不会用) 数据库的使用(本文使用的是MySql数据库) 运行环境(只要有可以运行PHP的环境和数据库< @网站,好的)

  八、搜索引擎获取页面源码,获取页面标题信息

  错误示例:

  警告:file_get_contents("") [function.file-get-contents]:无法打开流:E:\website\blog\test.php 第 25 行中的参数无效

  https 是一种 SSL 加密协议。如果您在获取页面时出现上述错误,则表示您的 PHP 可能缺少 OpenSSL 模块。您可以在网上找到解决方案。

  九、搜索引擎爬虫的特点

  虽然没见过像“百度”、“谷歌”这样的爬虫,但是通过自己的猜测和实际爬取过程中遇到的一些问题,总结了一些特点。(可能有错误或遗漏,请指正,谢谢。)

  *敏*感*词*性

  通用性是因为我觉得搜索引擎的爬虫一开始不是针对哪个网站设计的,所以要求尽可能多的爬取网站。这是第一点。第二点是获取网页的信息就是这样。一开始不会因为一些特殊的小网站而放弃一些信息不提取,例如:一个小网站的网页如果没有描述信息(description)或者meta标签中的关键词信息(关键字),直接放弃提取描述信息或关键词信息。当然,如果某个页面没有这样的信息,我会提取页面里面的文字内容作为填充,反正,每个网页的信息项要尽量相同,以实现抓取到的网页信息。这就是我认为的搜索引擎爬虫的*敏*感*词*性。当然,我的想法可能是错误的。(我可能不会说得很好,我一直在学习。)

  不确定

  不确定性是我的爬虫获取的网页。我对我能想到的东西没有足够的控制权。这也是我写的算法就是这样的原因。我的算法是抓取我得到的页面。所有的链接,然后去爬取这些链接,其实是因为搜索引擎不是搜索某些东西,而是尽可能多的搜索,因为只有更多的信息才能为用户找到最合适的答案。所以我觉得搜索引擎爬虫会有不确定性。(我自己又看了一遍,感觉有点看不懂我说的,还请见谅,请指正,提问,谢谢!)

  以下视频是我搜索网站的视频,找到的信息是通过我写的PHP爬虫获取的。(此网站已不再维护,如有不足请见谅。)

  十、目前可能出现的问题

  得到的源码出现乱码

  2. 无法获取标题信息

  3.无法获取页面源码

  十个一、获取网页时的处理思路

  我们不要考虑很多网页,因为很多网页只是一个循环。

  获取页面的源代码,通过源代码从页面中提取信息。

  十二、按照十一的思路编码

  十个三、PHP保存页面图片的想法

  获取页面源码 获取页面图片链接 使用图片保存功能

  十四、保存图片示例代码

  十五、gzip解压

  本来以为自己写的爬虫差不多就完成了,除了反爬虫网站难爬,应该能爬。但是有一天当我试图爬到bilibili时,出现了问题。发现我数据库里的代码全是乱码,而且根本没有标题,好奇怪!后来我发现是因为GZIP压缩。原来我直接用file_get_content函数获取的页面都是未压缩的页面,都是乱码!好的,那我就知道问题在那里了,然后我想解决它。(其实我当时不知道怎么解决gzip解压的问题,靠的就是搜索引擎,哈哈哈哈)。

  我得到了两个解决方案:

  在请求头中告诉对方我的爬虫(不...应该是我的浏览器)不支持gzip解压,所以请不要压缩,直接把数据发给我!

   // 这是request header(请求头)

$opts = array(

'http'=>array(

'method'=>"GET",

"timeout"=>20,

'header'=>"User-Agent: Spider \r\n".

"accept-encoding:"

)

);

// 我把accept-encodeing(能接收编码)设为空,代表不接受gzip

  2. 如果你告诉对方的服务器浏览器(爬虫)不支持gzip解压,他却继续给你发gzip数据,没办法,所以只能在里面找php解压gzip搜索引擎默默地。函数-gzdecode()。

  // 废话:好久没更新了,因为最近又在重做轮子了,不过我好开心——2019.01.14

  10.获取六、子链接

  网络爬虫就像是一个自动的网页源代码另存为操作,但如果真的是手动输入的网址供爬虫爬取,那么保存为手动会更好!所以在这里你必须解决这些子链接。一个网页实际上有很多a标签,这些a标签的href属性值就是一个子链接。(这句话怎么感觉有点废话?大家应该都知道吧!)通过很多工具的分析,得到了原来的子链接(我没有用html工具,只是用了正则表达式和工具)。为什么叫原创数据?,因为这些子链接很多不是网址链接,或者是一些不完整的链接,或者你要去爬一个网站。当爬虫用完时,你必须删除一些不是网站的链接,以防止爬虫用完。下面我列出了一些原创的子链接。(其实是我喷的坑……)

  http://wxample.com/

./index.html

index.html

//example.com/index.html

javascript:;

../index.html

http://example2.com/index.html

  可以看到这里有很多种链接。有完整绝对路径的链接,有不完整相对路径的链接,还有一些还运行javascript。如果是相对路径或者javascript链接,就让爬虫直接抓取。让爬虫看起来傻眼,因为它不完整或根本不是链接。因此,需要完成或丢弃子链接。

  10. 七、 子链接的处理

  说了这么多废话,接下来就是继续废话了。嗯,处理其实就是去重复,丢弃,完成。

  丢弃同一个子链接,不保存,补全相对路径链接。丢弃不是链接的链接(什么是非链接的链接?我觉得很奇怪......)

  第一种我就不多说了,相信大家都知道怎么做。

  对于第二种方法,我会写一个可以运行相对路径的方法,就OK了。相对路径通过父链接转换为绝对路径。(有时间给大家补码……不好意思)

  对于第三种,正则匹配结束。

  #有什么问题可以评论留言,大家一起解决,谢谢。

  未完待续。. .

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线