鱼C论坛

 找回密码
 立即注册
查看: 1977|回复: 4

[已解决]爬取贴吧多页图片!

[复制链接]
发表于 2017-9-6 17:45:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么文件夹里只有第一页的图片,
第二页也下载成功了啊
最佳答案
2017-9-6 22:15:44
本帖最后由 和vvv 于 2017-9-6 22:19 编辑

我知道你这个是什么问题了,其实你已经下载成功了。只是有些图片由于文件名相同被覆盖了。

下载的图片命名有问题,每一轮下载完之后,因此出现同文件名的图片会被覆盖。
你的图片下载过程并没有问题,只是保存时有些图片被覆盖。你要确保下载的图片名称不同,可以自己命名,也可以想其他办法。

这样修改是一种方法:
  1. import urllib.request
  2. import re,os
  3. os.mkdir("远方")
  4. os.chdir(os.path.join(os.getcwd(),"远方"))
  5. #page 表示爬取页数
  6. def getimg(url,page):
  7.         for k in range(1,page+1):
  8.                 ul = url+str(k)
  9.                 html = urllib.request.urlopen(ul).read().decode('utf-8')
  10.                 a = r'src="(.*?\.jpg)" size'
  11.                 req = re.compile(a)
  12.                 imglist = re.findall(req,html)
  13.                 for i in range(len(imglist)):
  14.                         urllib.request.urlretrieve(imglist[i],"%s.jpg" % (str(i)+str(k)) )
  15.                         print('下载成功'+str(k)+str(i)+'.jpg')

  16. if __name__ == '__main__':
  17.         url = 'https://tieba.baidu.com/p/5113603072?pn='
  18.         getimg(url,10)
复制代码
这是效果: 无标题.png

贴吧1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-6 18:27:43 | 显示全部楼层
能不能发个代码呢或者链接,这个直接看好像没问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-6 18:52:00 | 显示全部楼层
这个我做过
https://github.com/LewisTian/Python#tieba
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-6 19:28:01 | 显示全部楼层
和vvv 发表于 2017-9-6 18:27
能不能发个代码呢或者链接,这个直接看好像没问题。
  1. import urllib.request
  2. import re,os
  3. os.chdir('E:\python练习\贴吧')
  4. os.mkdir("远方")
  5. os.chdir(os.path.join(os.getcwd(),"远方"))
  6. def getimg(url,x):
  7.     html = urllib.request.urlopen(url).read().decode('utf-8')
  8.     a = r'src="(.*?\.jpg)" size'
  9.     req = re.compile(a)
  10.     imglist = re.findall(req,html)
  11.     for i in imglist:
  12.         x += 1
  13.         urllib.request.urlretrieve(i,"%s.jpg" % x)
  14.         print('下载成功', x)
  15. x = 0
  16. url = 'https://tieba.baidu.com/p/5113603072?pn='
  17. for k in range(1,20):
  18.     ul = url + str(k)
  19.     print(ul)
  20.     print(getimg(ul,x))
复制代码

求解答!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-6 22:15:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 和vvv 于 2017-9-6 22:19 编辑

我知道你这个是什么问题了,其实你已经下载成功了。只是有些图片由于文件名相同被覆盖了。

下载的图片命名有问题,每一轮下载完之后,因此出现同文件名的图片会被覆盖。
你的图片下载过程并没有问题,只是保存时有些图片被覆盖。你要确保下载的图片名称不同,可以自己命名,也可以想其他办法。

这样修改是一种方法:
  1. import urllib.request
  2. import re,os
  3. os.mkdir("远方")
  4. os.chdir(os.path.join(os.getcwd(),"远方"))
  5. #page 表示爬取页数
  6. def getimg(url,page):
  7.         for k in range(1,page+1):
  8.                 ul = url+str(k)
  9.                 html = urllib.request.urlopen(ul).read().decode('utf-8')
  10.                 a = r'src="(.*?\.jpg)" size'
  11.                 req = re.compile(a)
  12.                 imglist = re.findall(req,html)
  13.                 for i in range(len(imglist)):
  14.                         urllib.request.urlretrieve(imglist[i],"%s.jpg" % (str(i)+str(k)) )
  15.                         print('下载成功'+str(k)+str(i)+'.jpg')

  16. if __name__ == '__main__':
  17.         url = 'https://tieba.baidu.com/p/5113603072?pn='
  18.         getimg(url,10)
复制代码
这是效果: 无标题.png

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-2 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表