春节快乐

在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时,不会keeplive,而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抓取上述代码已经展示了一个基本的图片抓取方法,但是当目标图片普遍较大(如壁纸类图片)且网速受限不稳定时,可以不使用PHP进行下载转而调用linux系统下的wget命令,具体示例代码如下:图片抓取只是PHP网络爬虫能做到的很小一部分功能,通过PHP网络爬虫可以方便的获取互联网上更多的数据,无论是用于数据挖掘还是市场调研,甚至是制作搜索引擎。

ymkj_02418640029679每个有梦想的品牌都值得我们倾情助力

本文转载于微信公众号: 辽宁禹铭科技(ymkj_024),更多微信文章请扫描关注公众号:

Tag标签:

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐