php抓取网页所有图片(春节快乐PHP模拟浏览器访问url地址及相关源码如下)

优采云 发布时间: 2022-04-15 04:20

  php抓取网页所有图片(春节快乐PHP模拟浏览器访问url地址及相关源码如下)

  春天

  节日

  快的

  乐趣

  在PHP中爬取时,我们一般使用PHP来模拟浏览器访问,通过http请求访问url地址,然后获取html源代码或者xml数据。我们无法直接输出数据,往往需要将内容提取出来,然后进行格式化,以更友好的方式显示。

  一、基本原则

  常用的方法有file_get_contents和curl,区别简单说如下:

  1. curl 多用于互联网网页之间的爬取,file_get_contents 多用于获取静态页面的内容。

  2. file_get_contents 会为每个请求重新做 DNS 查询,并且不缓存 DNS 信息。但是 CURL 会自动缓存 DNS 信息。对同一域名下的网页或图片的请求只需要一次 DNS 查询。这大大减少了 DNS 查询的数量。所以 CURL 的性能要比 file_get_contents 好很多。

  3. file_get_contents 在请求 HTTP 时不会保持活动状态,但 curl 可以。这样,当多次请求多个链接时,curl 会更高效。

  4. curl 支持多种协议,包括 FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE 和 LDAP,这意味着它可以做很多 file_get_content 做不到的事情。curl可以在php中实现远程获取和采集内容;实现PHP网页版的FTP上传下载;实现模拟登录;实现接口对接(API)、数据传输;实现模拟cookie;,功能非常强大。

  5. file_get_contents 函数受 php.ini 文件中的 allow_url_open 选项配置影响。如果关闭配置,该功能也会失效。并且 curl 不受此配置的影响。

  二、图像捕捉

  这里以file_get_contents为例,抓取国内新闻网的新闻列表缩略图。

  页面及相关html源码如下:

  首先我们通过file_get_contents获取页面html的完整源码,并进行正则匹配,匹配所有img标签的src属性值,也就是我们要获取的目标:

  这样,上面代码中的$matches就存储了所有匹配到的img的src属性值,然后循环下载保存到本地:

  三、 通过PHP调用wget抓取

  上面的代码已经展示了一个基本的图片抓取方法,但是当目标图片一般比较大(比如壁纸图片)且网速有限且不稳定时,可以在linux系统下调用wget命令,而不是使用PHP下载,具体示例代码如下:

  图片爬取只是PHP网络爬虫可以做的一小部分功能。通过PHP网络爬虫,可以轻松获取互联网上更多的数据,无论是用于数据挖掘、市场调研,甚至是制作搜索引擎。

  ymkj_024

  每个有梦想的品牌都值得我们帮助

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线