python爬取百度图片的问题

ZJ729286823 2016-08-01 05:01:14
import os
import urllib
import urllib2
import re
url = u"http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1470037956784_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E4%B8%AD%E5%B1%B1%E9%99%B5%E9%9F%B3%E4%B9%90%E5%8F%B0"
#url = u"https://lvyou.baidu.com/zhongshanlingyinyuetai/fengjing/"
outpath = "d:\\g"


def getHtml(url):
request = urllib2.Request(url)
webfile = urllib2.urlopen(request)
outhtml = webfile.read()
#print outhtml
return outhtml


def getImageList(html):
restr = ur'('
restr += ur'http:\/\/[^\s,"]*\.jpg'
restr += ur'|http:\/\/[^\s,"]*\.jpeg'
restr += ur'|http:\/\/[^\s,"]*\.png'
restr += ur'|http:\/\/[^\s,"]*\.gif'
restr += ur'|http:\/\/[^\s,"]*\.bmp'
restr += ur'|https:\/\/[^\s,"]*\.jpeg'
restr += ur'|https:\/\/[^\s,"]*\.jpeg'
restr += ur'|https:\/\/[^\s,"]*\.png'
restr += ur'|https:\/\/[^\s,"]*\.gif'
restr += ur'|https:\/\/[^\s,"]*\.bmp'
restr += ur')'
htmlurl = re.compile(restr)
imgList = re.findall(htmlurl, html)
print imgList
return imgList


def download(imgList, page):
x = 1
for imgurl in imgList:
filepathname = str(outpath + 'pic_%09d_%010d' % (page, x) + str(
os.path.splitext(urllib2.unquote(imgurl).decode('utf8').split('/')[-1])[1])).lower()
print '[Debug] Download file :' + imgurl + ' >> ' + filepathname
urllib.urlretrieve(imgurl, filepathname)
x += 1


def downImageNum(pagenum):
page = 1
pageNumber = pagenum
while (page <= pageNumber):
html = getHtml(url) # 获得url指向的html内容
imageList = getImageList(html) # 获得所有图片的地址,返回列表
download(imageList, page) # 下载所有的图片
page = page + 1


if __name__ == '__main__':
downImageNum(1)


这也是网上一位http://www.oschina.net/code/snippet_69392_50080写的代码。
可是运行只输出了10张左右的图片。报错信息如下所示。
希望有人能指导指导。
...全文
604 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZJ729286823 2016-08-11
  • 打赏
  • 举报
回复
我的这个报错会不会就是因为网站认定我访问过多攻击他了?
secsilm 2016-08-06
  • 打赏
  • 举报
回复
我的不知道为什么只下了30张图片,你这个总共也是28张,不知道为什么
secsilm 2016-08-06
  • 打赏
  • 举报
回复
我自己写了一个爬百度图片的程序,只下载了30张图。
你这个报错应该是你的网络连接有问题,你可以检查你的网络连接是否正常然后重新运行。
我这里运行正常。

61,115

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧