php抓取网页动态数据(PHP是什么东西?PHP的爬虫有什么用?Python)

优采云 发布时间: 2022-01-13 11:01

  php抓取网页动态数据(PHP是什么东西?PHP的爬虫有什么用?Python)

  一、什么是 PHP?

  PHP(外文名称:PHP:Hypertext Preprocessor,中文名称:“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如何在没有环境的情况下运行?就像鱼不能离开水一样。(我不够了解,可能我的fish例子不够好,请见谅。)我在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]:无法打开流:第 25 行的 E:\website\blog\test.php 中的参数无效

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

  九、搜索引擎爬虫的特点

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

  概论

  概括性是因为我觉得搜索引擎的爬虫一开始不是为哪个网站设计的,所以要求尽可能多的爬网站,这是第一点。第二点是从网页中获取的信息是这样的。一开始不会因为一些特殊的小网站而放弃一些信息。例如:一个小的网站网页如果meta标签中没有描述或关键词信息(关键字),直接放弃提取描述信息或关键词信息。当然,如果某个页面没有这些信息,我会提取该页面。里面的文字内容是用来填充的,反正,每个网页的信息项应尽可能相同,以实现爬取的网页信息。这就是我认为搜索引擎爬虫的普遍性,当然我可能错了。(我可能说得不太好,我还在学习。)

  不确定

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

  下面的视频是我搜索网站的使用视频,找到的信息是通过我写的PHP爬虫获取的。(这个网站我不再维护了,所以有不足之处,请见谅。)

  

  十、目前可能出现的问题

  得到的源代码乱码

  2. 无法获取标题信息

  3.无法获取页面源代码

  十一、获取网页时要做的事情

  我们不要去想很多网页,因为很多网页也是一个循环。

  获取页面源代码。通过源码提取页面信息。如何处理提取的信息并放入数据库?

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

  保存页面的十个三、PHP图片创意

  获取页面源代码 获取页面图片链接 使用函数保存图片

  10四、保存图片示例代码

  十个五、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数据,那就没有别的办法了。函数 - gzdecode()。

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

  十个六、子链接获取

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

  http://example.com/

./index.html

index.html

//example.com/index.html

javascript:;

../index.html

http://example2.com/index.html

  可以看到这里的链接有很多种,包括完整的绝对路径链接,不完整的相对路径链接,还有一些javascript链接。如果是相对路径或者javascript链接,可以直接给爬虫爬取。迷惑爬虫,因为它不完整或根本不是链接。因此,有必要完成或丢弃子链接。

  十个七、子链接处理

  说了这么多废话,我们继续废话。好吧,处理实际上就是去重、丢弃和完成。

  对于相同的子链接,它们被丢弃而不被保存。对于相对路径链接补全,对于不是链接的链接,它们被丢弃(什么是链接不是链接?我觉得奇怪......)

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

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

  对于第三个,常规匹配已完成。

  10 八、使用DOM获取内容

  其实PHP中有HTML DOM,就是通过将HTML文件一个一个解析成节点,再解析成节点,可以减少正则表达式的使用。如果正则表达式使用过多,会导致不规则,或者一些意想不到的情况。因为 HTML 页面不在你的控制之下,你获取 HTML 内容的正则表达式会导致非标准错误。DOM还有一个好处,就是对于不会写正则表达式的人来说,只需要使用xpath表达式就可以得到想要的节点的数据,比使用正则表达式更容易。

  十九、使用抓包软件排查网页抓不到的原因

  因为有的网站需要登录才能获取数据,或者有的网站需要添加一些具体的请求头才能获取数据,所以我们可以使用抓包软件研究一下,具体需要什么网站 服务器使用该数据进行身份验证。有了抓包软件,我们就可以分析的很清楚了。

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

  待续。. .

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线