一、百度图片抓取

百度图片抓取存在两个难点:

(1)没有翻页功能,只有下拉不断get新的img,这个暂时没有解决,据说可以通过selenium模块来模拟浏览器动作进行,暂未入手,只能抓取最开始get到的那些图片;

(2)初步试验发现很多图片的url下载下来只有100多字节,无法打开,浏览器打开这些url后发现只有一个简略的预览图,而且刷新后便出现403错误禁止,这可能只是百度的一个中转url,那么真实的url在哪呢,下面上一段百度图片的html代码:

<img class="main_img img-hover" data-imgurl="http://img1.imgtn.bdimg.com/it/u=1474139545,1219393896&fm=21&gp=0.jpg" src="http://img1.imgtn.bdimg.com/it/u=1474139545,1219393896&fm=21&gp=0.jpg" style="width: 206px; height: 206px; background-color: rgb(200, 188, 152);">
<li class="imgitem" style="width: 192px; height: 200px; margin-right: 5px; margin-bottom: 5px;" data-objurl="http://scs.ganjistatic1.com/gjfs01/M00/89/F4/CgEHklWmXzvov6K-AABrKnXXM9U624_600-0_6-0.jpg" data-thumburl="http://img4.imgtn.bdimg.com/it/u=2997798573,880478713&fm=21&gp=0.jpg" data-fromurl="ippr_z2C$qAzdH3FAzdH3Fzw5zi7wg2_z&e3B2wg3t_z&e3Bv54AzdH3F257AzdH3F8mnnncc00mx_z&e3Bip4" data-fromurlhost="zaozhuang.ganji.com" data-ext="jpg" data-saved="0" data-pi="0" data-specialtype="0" data-cs="2997798573,880478713" data-width="504" data-height="541" data-title="<strong>宠物</strong>照片" data-personalized="0"><div class="imgbox"><a href="/search/detail?ct=503316480&z=undefined&tn=baiduimagedetail&ipn=d&word=%E5%AE%A0%E7%89%A9&step_word=&ie=utf-8&in=&cl=2&lm=-1&st=undefined&cs=2997798573,880478713&os=2697691740,1594419755&simid=0,0&pn=3&rn=1&di=17885681440&ln=1984&fr=&fmq=1477191469084_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&is=0,0&istype=0&ist=&jit=&bdtype=0&adpicid=0&pi=0&gsm=0&objurl=http%3A%2F%2Fscs.ganjistatic1.com%2Fgjfs01%2FM00%2F89%2FF4%2FCgEHklWmXzvov6K-AABrKnXXM9U624_600-0_6-0.jpg&rpstart=0&rpnum=0&adpicid=0" target="_blank" style="display: block; width: 191px; height: 206px;" name="pn3" class="div_2997798573,880478713"><img class="main_img img-hover" data-imgurl="http://img4.imgtn.bdimg.com/it/u=2997798573,880478713&fm=21&gp=0.jpg" src="http://img4.imgtn.bdimg.com/it/u=2997798573,880478713&fm=21&gp=0.jpg" style="width: 191px; height: 206px; background-color: rgb(189, 171, 169);"></a></div><div class="hover" title="图片来源: zaozhuang.ganji.com
图片描述:宠物照片"><div class="ct" style="left: 0px; top: 50px;"><div style="padding-top: 7px;"><a class="title" target="_blank" href="http://zaozhuang.ganji.com/gou/1633355776x.htm"><strong>宠物</strong>照片...</a><br><a class="size">504x541</a></div><a class="dutu" href="/n/pc_search?queryImageUrl=http%3A%2F%2Fimg4.imgtn.bdimg.com%2Fit%2Fu%3D2997798573%2C880478713%26fm%3D21%26gp%3D0.jpg&word=%E5%AE%A0%E7%89%A9&fm=searchresult&uptype=button" target="_blank" title="按图片搜索"></a><a target="_self" class="down" οnclick="return p(null,390,{newp:42});" title="下载原图" href="/search/down?tn=download&ipn=dwnl&word=download&ie=utf8&fr=result&url=http%3A%2F%2Fscs.ganjistatic1.com%2Fgjfs01%2FM00%2F89%2FF4%2FCgEHklWmXzvov6K-AABrKnXXM9U624_600-0_6-0.jpg&thumburl=http%3A%2F%2Fimg4.imgtn.bdimg.com%2Fit%2Fu%3D2997798573%2C880478713%26fm%3D21%26gp%3D0.jpg"></a></div></div></li>

这里面提供了大致两种类型的url:

data-imgurl:http://img1.imgtn.bdimg.com/it/u=1474139545,1219393896&fm=21&gp=0.jpg

data-objurl:http://scs.ganjistatic1.com/gjfs01/M00/89/F4/CgEHklWmXzvov6K-AABrKnXXM9U624_600-0_6-0.jpg

我们打开这两个url发现,竟然是同样的图片,而且上面的url明显只是个预览,因此,确认在获取图像url时获得了多余的imgurl,需要进行剔除。

Python下载图片的几种方法:

(1)urllib.urretrieve直接调用

urllib.urltrieve(url,filename)

(2)file写入数据

conn = urllib2.urlopen(all_jpg[0]);

f = open('123','wb');

f.write(conn.read());

f.close()

(3)直接利用IO写入数据

import requests
from cStringIO import StringIO
from PIL import Image
r = requests.get('http://www.solarspace.co.uk/PlanetPics/Neptune/NeptuneAlt1.jpg')
with open('##.jpg','wb') as fout:
     fout.write(r.content)

下面上代码:

#-*-coding:utf-8-*-
'''
created by zwg in 2016-10-17
'''
import urllib2,urllib
import os,re
url='http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=' \'-1&cl=2&ie=gbk&word=%D3%DE%B4%C0&hs=0&fr=ala&ori_query=%E6%84%9A%E8' \'%A0%A2&ala=0&alatpl=sp&pos=0'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) ''AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/45.0.2454.101 Safari/537.36'}
request=urllib2.Request(url=url,headers=headers)
html=urllib2.urlopen(request).read()
file1=file('baidu.html','w+')
file1.write(html)
file1.close()
pattern=re.compile('http://.+?\.jpg')
all_image=pattern.findall(html)#这里面有一大部分图片的url是百度的虚拟url,无效
path='D:\\Python\\web_crawler\\baidu_photo'
if not os.path.exists(path):os.mkdir(path)import time
t1=time.time()
# 下载保存图片的一种方法
p=re.compile('u=')
k=0
for i in all_image:if len(p.findall(i))==0:#确保不是由百度提供的jsp图片地址,导致下载失败try:k=k+1urllib.urlretrieve(i,path+'\\'+str(k)+'.jpg')print iexcept:pass
t2=time.time()
print '花费时间:', t2 - t1

二、百度贴吧图片抓取

这个抓取几乎没有什么难度,直接获取url解析正则即可得到真实url。

#-*-coding:utf-8 -*-
'''
created by zwg in 2016-10-17
'''
#下载百度贴吧某个页面的jpg图片
import re
import urllib2
import urllib
import os
path='C:\\Users\\zhangweiguo\\Desktop\\jpg'
if not os.path.exists(path):os.mkdir(path)
def gethtml(url):   #读取html为字符串page=urllib2.urlopen(url)html=page.read()return html
def getimg(html):   #正则表达式查询re_img1="http://imgsrc.baidu.*?jpg"re_img1=re.compile(re_img1)img1=re_img1.findall(html)re_img2 = "http://imgsrc.baidu.*?png"re_img2 = re.compile(re_img2)img2 = re_img2.findall(html)img=[]img.extend(img1)img.extend(img2)return imghtml=gethtml('http://tieba.baidu.com/p/4530493052')
img=getimg(html)#下面是直接下载并保存
x=1
for i in img:urllib.urlretrieve(i,'C:\Users\zhangweiguo\Desktop\jpg\%s.jpg'%x)x=x+1print x

Python_百度图片以及百度贴吧图片抓取相关推荐

  1. 百度认为什么样的网站更有抓取和收录价值

    百度认为什么样的网站更有抓取和收录价值 百度认为什么样的网站更有抓取和收录价值呢?我们从下面几个方面简单介绍.鉴于技术保密以及网站运营的差异等其他原因,以下内容仅供站长参考,具体的收录策略包括但不仅限 ...

  2. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  3. 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

  4. php爬虫爬取百度的内容,爬虫(一)抓取百度页面的内容

    最近在实习,导师又没得项目让我一起做东西,就自己坐在一边瞎鼓捣东西 那闲着也是闲着,想来写写爬虫 爬虫百度百科上的定义如下 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页 ...

  5. python爬虫好友图片_利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  6. 利用python批量爬取网页图片_使用python来批量抓取网站图片

    今天"无意"看美女无意溜达到一个网站,发现妹子多多,但是可恨一个page只显示一张或两张图片,家里WiFi也难用,于是发挥"程序猿"的本色,写个小脚本,把图片扒 ...

  7. python下载图片被覆盖了_scrapy 将抓取内容中的图片下载到本地并替换内容中的原始图片...

    使用scrapy采集的文章里面有很多图片,都是远程图片,我想把这些远程图片都下载下来,然后把图片地址全都改成相对路径. 我想把里面的图片都下载到本地,然后再把路径保存再item 里面. def par ...

  8. python爬取百度百科搜索结果_用Python抓取百度搜索结果,python,爬取,的

    前言 前几天爬的今天整理了一下发现就两个需要注意的点 一是记得用带cookie的方式去访问,也就是实例化requests.session() 二是转化一下爬取到的url,访问爬到的url得到返回的Lo ...

  9. 百度下拉词用python怎么抓取

    首先我们现在百度随便搜索一个词用于模拟搜索,按F12--点击下方XHR,获取百度异步请求的数据,可以看出,获取相应的url和data参数,如图所示: 再获取对应的请求参数,如图所示,在进行多方面的测试 ...

  10. python抓取微博评论的图片_用Python语言爬虫抓取微博评论图文教程

    提交Cookie信息模拟微博登录 需要爬取登录之后的信息,大家都是望而止步,不要担心,今天呢,给大家提供一个超级简单的方法,就是提交Cookie信息登录微博,首先,我们找到某明星的微博网址:http: ...

最新文章

  1. 使用wireshark工具获得直连设备的IP地址
  2. 使用FCN做图像语义分割(实践篇)
  3. mysql mycat 路由规则_Mycat分库路由规则
  4. bootstrap 日历中文_bootstrap日期选择器本地化-中文
  5. IAR #pragma optimize 指令
  6. python scikit_如何将Scikit学习Python库用于数据科学项目
  7. 闰年的判断方法_练习题079:如何判断某年为闰年
  8. Python爬虫下载网易云音乐歌曲
  9. 移动硬盘遇到无法访问,文件或目录损坏且无法读取的解决办法
  10. C51单片机实验——7段数码管实验
  11. 文件上传解析器MultipartResolver
  12. 3.2 二维随机变量的边缘分布
  13. java web 爬虫_Java开源Web爬虫项目
  14. 实现简单的自定义音乐播放器
  15. 手机安装app总是显示未安装
  16. vscode ( Visual Studio Code )设置中文、字体和字号
  17. 【转载】多网卡的7种bond模式原理
  18. 分享148个PHP源码,总有一款适合您
  19. apache camel
  20. 最新上传缙云县五云镇欣禾社凭证(部分)

热门文章

  1. 7 WM配置-主数据-定义拣配区(Picking Area)
  2. linux内核make执行过程
  3. model 提交表信息java,Angular6+antd+java+SpringMVC,表单提交自动接收模型对象?
  4. isis软件_小白学单片机:单片机电路仿真利器-Protues仿真软件的使用(1)
  5. OpenCV Mat主要用法(1)
  6. wc命令统计文件数据数量信息
  7. 如何向.js文件传变量(如session)
  8. android h5语音,html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia...
  9. python web开发要学什么_Python WEB开发 用Python开展web开发必须学习什么?
  10. Ubuntu系统显卡驱动、CUDA、CUDNN安装(二CUDA和CUDNN)