今天无聊看在知乎上看到有人写网络爬虫爬图片( ̄▽  ̄)

传送门:

福利 - 不过百行代码的爬虫爬取美女图:https://zhuanlan.zhihu.com/p/24730075

福利 - 不过十行代码的爬虫爬取美女图:https://zhuanlan.zhihu.com/p/24779556

其实这个是一个nodejs用了一百多行代码和php只要10行代码写的爬虫代码比较( ̄▽  ̄)

不过这都不重要,重要的是,我看着无聊,自己又写了一个花瓣的图片爬虫( ̄▽  ̄)( ̄▽  ̄)

注释都在代码里的,不多说了,直接上代码:

<?php
/**
* 获取花瓣网图片
* @param string $mixed 查询关键字或直接一个画板id
* @param int $page_limit 要查询几页的,默认只查一页
* @return void
*/
function getHuabanImgs($mixed, $page_limit=1){
error_reporting(0);
set_time_limit(0); $board_id = 0;
$keyword = '';
$max = ''; if(is_numeric($mixed))
{
$board_id = $mixed;
}else
{
$keyword = urlencode($mixed);
} @mkdir('save'); for ($pageno = 1 ; $pageno <= $page_limit; $pageno ++)
{
/*
你喜欢用curl也行,使用这个花瓣的接口关键点是要在请求头加一个 X-Requested-With:XMLHttpRequest
如果没有这个X-Requested-With,接口返回的是一个html网页,有的话,就是返回json
*/ /*$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://huaban.com/search/?q='.$keyword.'&ixsaam0z&page='.$pageno.'&per_page=20&wfl=1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:application','X-Request:JSON','X-Requested-With:XMLHttpRequest'));
$response = curl_exec($ch);
curl_close($ch);*/ $context = stream_context_create(array('http'=>array('method'=>'GET','header'=>"Accept:application\r\nX-Request:JSON\r\nX-Requested-With:XMLHttpRequest\r\n"))); //按画板id查找
if($board_id>0)
{
$response = @file_get_contents('http://huaban.com/boards/'.$board_id.'/?&max='.$max.'&limit=20&wfl=1', 'r', $context);
$arr = @json_decode($response, true);
$pins = $arr['board']['pins'];
}
//按关键字查找
else
{
$response = @file_get_contents('http://huaban.com/search/?q='.$keyword.'&ixsaam0z&page='.$pageno.'&per_page=20&wfl=1', 'r', $context);
$arr = @json_decode($response, true);
$pins = $arr['pins'];
} if(empty($pins)) break; foreach ((array)$pins as $key => $value)
{
$type = str_replace('image/', '', $value['file']['type']);
if(!$type || $type=='jpeg') $type = 'jpg'; $max = $value['pin_id']; /*
花瓣的缩略图链接是这个的:http://img.hb.aicdn.com/c39ac6a698b6d95b823d0840a773bdb7f2cc057216dfd-HkHx3k_fw236
而大图的链接是这样的:http://img.hb.aicdn.com/c39ac6a698b6d95b823d0840a773bdb7f2cc057216dfd-HkHx3k
可以看出,其实就是去掉后面的_fw236而已,这里使用 preg_replace 正则去掉这类后缀
*/
@copy('http://img.hb.aicdn.com/' . preg_replace('/(_[\s\S]+)?/', '', $value['file']['key']), './save/'.$value['file']['id'] . '.' . $type);
}
}
} // getHuabanImgs('向日葵', 2);
getHuabanImgs('13715723', 2);

自己建个 php 文件来测试玩一下吧

php 网络爬虫,爬一下花瓣的图片的更多相关文章

  1. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  2. 利用Python网络爬虫爬取学校官网十条标题

    利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...

  3. 浅谈网络爬虫爬js动态加载网页(二)

    没错,最后我还是使用了Selenium,去实现上一篇我所说的问题,别的没有试,只试了一下firefox的引擎,总体效果对我来说还是可以接受的. 继续昨天的话题,既然要实现上篇所说的问题,那么就需要一个 ...

  4. scrapy爬虫爬取小姐姐图片(不羞涩)

    这个爬虫主要学习scrapy的item Pipeline 是时候搬出这张图了: 当我们要使用item Pipeline的时候,要现在settings里面取消这几行的注释 我们可以自定义Item Pip ...

  5. Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说

    注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...

  6. python爬虫——爬取NUS-WIDE数据库图片

    实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm   由于这个数据只给了每个图片的URL,所以需 ...

  7. Python 爬虫: 抓取花瓣网图片

    接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...

  8. 如何用Python网络爬虫爬取网易云音乐歌曲

    今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两 ...

  9. python网络爬虫&&爬取图片

    爬取学院官网数据from urllib.request import * #导入所有request urllib文件夹,request只是里面的一个模块from lxml import etree # ...

随机推荐

  1. jquery ajax中success与complete的执行顺序 (转)

    http://blog.sina.com.cn/s/blog_4adc4b090101dhnh.html https://q.cnblogs.com/q/21810/ **************** ...

  2. 【转】python多版本并存,python3安装pip

    python3 与 pip3 安装与使用   1. yum -y install openssl* (pip依赖ssl环境) 2.编译安装python3 下载地址:https://www.python ...

  3. 一个div层在页面上下左右居中以及数据的排序

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. J2EE的13个规范总结

    转载自:http://blog.csdn.net/zhuanzhe117/article/details/38763483 什么是J2EE? 在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮 ...

  5. pygame绘制文本

    def drawText(self,text,posx,posy,textHeight=48,fontColor=(0,0,0),backgroudColor=(255,255,255)): font ...

  6. dp之多维背包hdu4501

    思路:将v1,v2,k都当作一种体积,每种物品只能取一次,求max....... 反思:以前写背包,由于只有一个体积,所以习惯性的在for中,就所取的最小值限制,而在这次,因为这里导致wa了,具体是因 ...

  7. Hibernate xml配置方法之联合主键

    1.StudentPK类,存放Student的联合主键,必须实现java.io.Serializable接口(为了序列化扩充移植),必须重写equals跟hashCode方法(为了确保唯一性) pub ...

  8. js获取相同name文本框的value

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> < ...

  9. UML总结--总体架构

    架构图(一): 架构图(二): 转自:http://blog.csdn.net/lsh6688/article/details/5931706

  10. 鼠标捕获(setCapture,releaseCapture)的学习

    鼠标捕获(setCapture)作用是将鼠标事件捕获到当前文档的指定的对象——对指定的对象设置鼠标捕获.这个对象会为当前应用程序或整个系统接收所有鼠标事件. 所谓鼠标捕获,是指对鼠标事件(onmous ...