<?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实现爬虫程序 套取网站的图片实例的更多相关文章

  1. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息

    每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...

  2. 一个简单的python爬虫程序

    python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...

  3. python网络爬虫 - 如何伪装逃过反爬虫程序

    有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了. 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如 ...

  4. 爬虫浅谈一:一个简单c#爬虫程序

    这篇文章只是简单展示一个基于HTTP请求如何抓取数据的文章,如觉得简单的朋友,后续我们再慢慢深入研究探讨. 图1: 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示.如某天产品经理跟 ...

  5. Scrapy:运行爬虫程序的方式

    Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在创建了爬虫程序后,就可以运行爬虫程序了.Scrapy中介绍了几种运行爬虫程序的方式,列举如下: -命令行工具之s ...

  6. Scrapy:创建爬虫程序的方式

    Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在Scrapy中,建立爬虫程序或项目的方式有两种(在孤读过Scrapy的大部分文档后): 1.继承官方Spider ...

  7. 第一个get请求的爬虫程序

    一:urllib库: urllib是Python自带的一个用于爬虫的库,器主要作用就是可以通过代码模拟浏览器发送请求.其被用到子模块在Python3中的urllib.request和urllib.pa ...

  8. Android网络爬虫程序(基于Jsoup)

    摘要:基于 Jsoup 实现一个 Android 的网络爬虫程序,抓取网页的内容并显示出来.写这个程序的主要目的是抓取海投网的宣讲会信息(公司.时间.地点)并在移动端显示,这样就可以随时随地的浏览在学 ...

  9. 一个简单的C#爬虫程序

    这篇这篇文章主要是展示了一个C#语言如何抓取网站中的图片.实现原理就是基于http请求.C#给我们提供了HttpWebRequest和WebClient两个对象,方便发送请求获取数据,下面看如何实 1 ...

随机推荐

  1. 两种常用的启动和关闭MySQL服务

    本博文的主要内容有 .通过图形界面来启动和关闭MySQL服务 .通过DOS窗口来启动和关闭MySQL服务 1.通过图形界面来启动和关闭MySQL服务 2.通过DOS窗口来启动和关闭MySQL服务 感谢 ...

  2. iOS获取经纬度

    在ios8.0以上获取经纬度时,需要申请授权,否则不能定位   第一步: 在 HomeViewController.m @interfaceHomeViewController ()<CLLoc ...

  3. 使用ViewPager实现三个fragment切换

    新建一个android项目 先展示效果吧 首先看myfragmentPagerAdater这个类的代码 package com.example.viewpager; import java.util. ...

  4. Web classPath

    classpath,看名字,类路径,这样比如,对于java程序,就是告诉java程序哪里去找类.(java虚拟机都是通过类装载器的)想myeclipse中struts,spring,hibernate ...

  5. Android群英传》读书笔记 (4) 第八章 Activity和Activity调用栈分析 + 第九章 系统信息与安全机制 + 第十章 性能优化

    第八章 Activity和Activity调用栈分析 1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重 ...

  6. MySQL日志概述

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3859866.html ...

  7. float与double剖析

    今天研究下float与double的编码 float: 我们来看一下这组数是如何一步步从16进制转换到float的 float编码格式: 1.将16进制转换到2进制 整理后:0 1000 0010 1 ...

  8. hdu 3450 Counting Sequences

    /* n*n暴力 这个很好想 */ #include<cstdio> #define maxn 100010 #define mod 9901 using namespace std; i ...

  9. gridview实现表格编辑功能

    .net开发者对gridview应该非常熟悉,数据展现.数据编辑.数据删除,这些gridview都能很好的完成.最近在做东西的时候遇到 这样的一个需求,就是利用gridview实现类似Excel一样直 ...

  10. web前端:js

    内嵌样式<script></script> alert(“123”)弹出对话框 document.write(“test”) 引入方式 <title></ti ...