php pacong_1.php "酒","电报","电表","电波","电厂","电场","电车","电池","电传","电磁",
<?php
error_reporting(E_ALL ^ E_NOTICE);
set_time_limit(0);
$word2=explode(",",$argv[1]);
$pageNum = 35;
$uuid = md5(uniqid(mt_rand(), true));
//获取数据
foreach($word2 as $k=>$v) {
$encodeWord = urlencode(yang_gbk2utf8($v));
for ($i=1; $i < $pageNum; $i++) {
$page = ($i)*30;
//百度头像图片获取api
$url = "http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&ie=utf-8&oe=utf-8&word=".$encodeWord."&pn=".$page."&rn=30&gsm=700001e&1457697756442=";
echo $url."\r\n";
$imgJsonData = file_get_contents($url);
//随机采样,让每次获取的图片尽量不是相同的,可以增加获取图片api去减少获取重复的图片的几率
$imgJsonData = json_decode($imgJsonData,true);
//print_r($imgJsonData);
foreach ($imgJsonData['data'] as $key => $dataArr) {
if ($dataArr['thumbURL']) {
downloadImg($dataArr['thumbURL'],$uuid.$k);
}
}
}
}

function downloadImg($url,$k) {
$path = './userSysAvatorUrl/'.$k."/";
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
$headers=array(
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
"Connection: keep-alive",
"Host: img0.imgtn.bdimg.com",
"Referer: http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gbk&word=%CD%B7%CF%F1&fr=ala&oriquery=%E5%A4%B4%E5%83%8F&ala=1&alatpl=portait&pos=0",
"User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0",
"X-Requested-With: XMLHttpRequest"
);
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//执行并获取HTML文档内容
$imgBin = curl_exec($ch);
curl_close($ch);
list($msec, $sec) = explode(' ', microtime());
$file_name = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
$shullf = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$rand_key = array_rand($shullf,3);
$file_name = $shullf[$rand_key[0]].$shullf[$rand_key[1]].$shullf[$rand_key[2]].'_'.$file_name. '.jpg';
file_put_contents($path.$file_name, $imgBin);
//释放curl句柄

}

function yang_gbk2utf8($str){
$charset = mb_detect_encoding($str,array('UTF-8','GBK','GB2312'));
$charset = strtolower($charset);
if('cp936' == $charset){
$charset='GBK';
}
if("utf-8" != $charset){
$str = iconv($charset,"UTF-8//IGNORE",$str);
}
return $str;
}

?>

PHP爬虫百度图片的更多相关文章

  1. 百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...

  2. 【Python网络爬虫四】通过关键字爬取多张百度图片的图片

    最近看了女神的新剧<逃避虽然可耻但有用>,同样男主也是一名程序员,所以很有共鸣 被大只萝莉萌的一脸一脸的,我们来爬一爬女神的皂片. 百度搜索结果:新恒结衣 本文主要分为4个部分: 1.下载 ...

  3. Python爬虫:通过关键字爬取百度图片

    使用工具:Python2.7 点我下载 scrapy框架 sublime text3 一.搭建python(Windows版本) 1.安装python2.7 ---然后在cmd当中输入python,界 ...

  4. python爬虫之爬取百度图片

    ##author:wuhao##爬取指定页码的图片,如果需要爬取某一类的所有图片,整体框架不变,但需要另作分析#import urllib.requestimport urllib.parseimpo ...

  5. 如何用Python爬虫实现百度图片自动下载?

    Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...

  6. python爬虫获取百度图片(没有精华,只为娱乐)

    python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...

  7. python3 TensorFlow训练数据集准备 下载一些百度图片 入门级爬虫示例

    从百度图片下载一些图片当做训练集,好久没写爬虫,生疏了.没有任何反爬,随便抓. 网页: 动态加载,往下划会出现更多的图片,一次大概30个.先找到保存每一张图片的json,其对应的url: 打开调试,清 ...

  8. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

  9. python写的百度图片爬虫

    学了一下python正则表达式,写一个百度图片爬虫玩玩. 当技术遇上心术不正的人,就成我这样的2B青年了. python3.6开发.程序已经打包好,下载地址: http://pan.baidu.com ...

随机推荐

  1. vue与dajngo

    怎么说,网上找的例子真的不是一般的坑,根本就是少了很多流程让人故意看不懂 第一步,创建好我们的app django-admin startproject weeklyapp 这是创建我们的整个系统ap ...

  2. maven repository pom

    场景: 如果maven setting.xml 中没指定国内的镜像 可以通过在项目中的pom中指定 指定repository : <properties> <java.version ...

  3. linux挂载硬盘分区

    [转]https://www.jb51.net/article/138204.htm 基本步骤:分区——格式化——挂载——写入文件 1.使用fdisk    -l命令查看添加的硬盘名称,可以看到sdb ...

  4. linux上如何设置网络,出现connect: network is unreachable 的问题。

    发现有网友问有关ping命令出现connect: network is unreachable 的问题. 这通常是因为没正确设置ip地址. 解决方法: 在确保完善网卡驱动,以及确保将网卡驱动编译进内核 ...

  5. 基于MGR+Atlas的读写分离尝试,以及MGR+Keepalived+Atlas自动故障转移+读写分离设想

    目的是尝试altas的读写分离,现有一套搭建好做测试的MGR(单主),于是就腿搓绳,在MGR基础上搭建altas. 复制环境准备 读写分离理论上讲,跟复制模式没有关系,atlas负责的是重定向读写,至 ...

  6. wget -r -c -nd

    wget -r -c -nd -r 递归下载 -c 断点续传 -nd 不创建目录, wget默认会创建一个目录 -l1 (L one) 递归一层,只下载指定文件夹中的内容, 不下载下一级目录中的.–n ...

  7. 转载:C# socket端口复用-多主机头绑定

    什么是端口复用: 因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分.这种多重绑定便称之为端口复用 ...

  8. leetcode136只出现一次的数字

    交换律:a ^ b ^ c <=> a ^ c ^ b 任何数于0异或为任何数 0 ^ n => n 相同的数异或为0: n ^ n => 0 int singleNumber ...

  9. javaMail实现收发邮件(五)

    控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏 ...

  10. 提高GitHub下载速度

    修改/etc/hosts 加上 151.101.72.249 GitHub.global.ssl.fastly.net 192.30.253.112 github.com