使用php实现爬虫程序 套取网站的图片实例
<?php
//去采集a67 图片 网站链接 http://www.xiamov.com/list/1/p.2 你也可以采集其他网站的图片
//创建链接 dedecms--a67
//设置执行不超时
set_time_limit(0);
//fsockopen() 函数 第一个参数是指主机 第二个参数指的是端口号 一般我们默认为80端口 第三个参数是错误编号 第四个参数是返回错误的字符串 第五个参数指的是链接时长 我上面写的是30秒 如果30秒没有链接到对方主机 则会返回链接失败
$conn=fsockopen("www.xiamov.com",80,$errno,$errstr,30);
if(!$conn){
die("链接失败");
} //说话 协议
$httpstr="GET /list/1/p.2 HTTP/1.1\r\n";
$httpstr.="Host: www.xiamov.com\r\n";
$httpstr.="Connection: Close\r\n\r\n"; //发送http请求 对方就应该有回应
fwrite($conn,$httpstr,strlen($httpstr)); //看看a67 网站会送的是什么东西
$res="";
while(!feof($conn)){
$res.=fread($conn,1024);
}
fclose($conn);
//file_put_contents("D:/1.txt", $res);
//echo $res;
//我要找到该页面的图片资源 img src
//<img alt="邪恶小分队下载" title="邪恶小分队下载" src="http://img.xiamov.com/vod/2016-07/578e2cc52da30.jpg">
$reg1='/<img alt="[^"]*" title="[^"]*" src="([^"]*)"/i'; //这个是匹配上面的<img 的正则表达式 [^"]* 这个表示的是 只要不是“ 就不断匹配 这个很常用 可以学习
preg_match_all($reg1,$res,$arr1); //把$arr1[1]遍历 并取出各个图片的uri
foreach($arr1[1] as $imgurl){
//echo"<br/>".$imgurl;
$imguri=str_replace("http://img.xiamov.com","",$imgurl);
//echo"<br/>".$imguri;
//再次发出请求 要图片 注意 这里的主机发生变化了 主机变化为img.xiamov.com
$conn=fsockopen("img.xiamov.com",80,$errno,$errstr,30);
//组织httpstr
$httpstr="GET $imguri HTTP/1.1\r\n";
$httpstr.="Host: img.xiamov.com\r\n";
$httpstr.="Connection: Close\r\n\r\n"; //发出请求 img
fwrite($conn,$httpstr,strlen($httpstr));
$res2="";
while(!feof($conn)){
$res2.=fread($conn,1024);
}
fclose($conn); //看看$res2是什么
//file_put_contents("D:/1.txt", $res2);
//exit();
//我们把图片的数据从$res2截取出来 保存成图片 $pos=strpos($res2,"\r\n\r\n");
$imgres=substr($res2,$pos+4); //后面加的数字很重要 这个数字4 是本人不断测试才得到的
$fileinfo=pathinfo($imguri);
file_put_contents("./myimages/".$fileinfo['basename'], $imgres);
//die;
sleep(2); //我们可以使用sleep函数 来延迟发送请求
} die("成功取回图片");
以上是采取A67电影网中电影列表的部分图片 通过以上的爬取程序 我们就可以爬取任何网站的图片了
使用php实现爬虫程序 套取网站的图片实例的更多相关文章
- 开发记录_自学Python写爬虫程序爬取csdn个人博客信息
每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...
- 一个简单的python爬虫程序
python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...
- python网络爬虫 - 如何伪装逃过反爬虫程序
有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了. 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如 ...
- 爬虫浅谈一:一个简单c#爬虫程序
这篇文章只是简单展示一个基于HTTP请求如何抓取数据的文章,如觉得简单的朋友,后续我们再慢慢深入研究探讨. 图1: 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示.如某天产品经理跟 ...
- Scrapy:运行爬虫程序的方式
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在创建了爬虫程序后,就可以运行爬虫程序了.Scrapy中介绍了几种运行爬虫程序的方式,列举如下: -命令行工具之s ...
- Scrapy:创建爬虫程序的方式
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在Scrapy中,建立爬虫程序或项目的方式有两种(在孤读过Scrapy的大部分文档后): 1.继承官方Spider ...
- 第一个get请求的爬虫程序
一:urllib库: urllib是Python自带的一个用于爬虫的库,器主要作用就是可以通过代码模拟浏览器发送请求.其被用到子模块在Python3中的urllib.request和urllib.pa ...
- Android网络爬虫程序(基于Jsoup)
摘要:基于 Jsoup 实现一个 Android 的网络爬虫程序,抓取网页的内容并显示出来.写这个程序的主要目的是抓取海投网的宣讲会信息(公司.时间.地点)并在移动端显示,这样就可以随时随地的浏览在学 ...
- 一个简单的C#爬虫程序
这篇这篇文章主要是展示了一个C#语言如何抓取网站中的图片.实现原理就是基于http请求.C#给我们提供了HttpWebRequest和WebClient两个对象,方便发送请求获取数据,下面看如何实 1 ...
随机推荐
- android 国内sdk下载地址及代理, android 环境搭建
http://www.androiddevtools.cn/ http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform ...
- openstack简易汉化
- 中科院NLPIR中文分词java版
中科院NLPIR中文分词java版 中科院NLPIR中文分词java版
- SPOJ 375 (树链剖分+线段树)
题意:一棵包含N 个结点的树,每条边都有一个权值,要求模拟两种操作:(1)改变某条边的权值,(2)询问U,V 之间的路径中权值最大的边. 思路:最近比赛总是看到有树链剖分的题目,就看了论文,做了这题, ...
- 设计模式(4) -- 单例模式(Singleton)
设计模式(4) -- 单例模式(Singleton) 试想一个读取配置文件的需求,创建完读取类后通过New一个类的实例来读取配置文件的内容,在系统运行期间,系统中会存在很多个该类的实例对象,也就是说 ...
- 浅谈UML中类之间的五种关系及其在代码中的表现形式
本文转载:http://www.cnblogs.com/DebugLZQ/archive/2013/05/13/3066715.html 什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种 ...
- POJ 3414 Pots【bfs模拟倒水问题】
链接: http://poj.org/problem?id=3414 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22009#probl ...
- Linux kernel驱动相关抽象概念及其实现 之“linux设备模型kobject,kset,ktype”
kobject,kset,ktype三个很重要的概念贯穿Linux内核驱动架构,特转载一篇博文: (转载自http://blog.csdn.net/gdt_a20/article/details/64 ...
- docker-compose 工具安装
centos 7 安装 之前测试过相关安装方法 pip python 安装不行 还是用下面这个办法搞定 curl -L https://github.com/docker/compose/releas ...
- Android中GridView拖拽的效果
最 近看到联想,摩托罗拉等,手机launcher中有个效果,进入mainmenu后,里面的应用程序的图标可以拖来拖去,所以我也参照网上给的代码,写了 一个例子.还是很有趣的,实现的流畅度没有人家的那么 ...