鱼C论坛

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

[已解决]for循环逻辑问题,求助

[复制链接]
发表于 2020-4-25 01:18:39 | 显示全部楼层 |阅读模式

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

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

x

  1. import re
  2. import urllib.request as ur

  3. url = 'http://jandan.net/ooxx/MjAyMDA0MjQtMjAx#comments'
  4. req = ur.Request(url)
  5. req.add_header('user-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36')
  6. response = ur.urlopen(req)
  7. html = response.read().decode('utf-8')
  8. p = r'<img src="//wx.+\.jpg'
  9. imglist = re.findall(p,html)
  10. for i  in imglist:
  11.     a = i.split('//',1)[1]
  12.     b = 'http://'+a
  13.     c = ur.urlopen(b).read()
  14.     for m in range(len(imglist)):
  15.         file = str(m+1)+'.jpg'
  16.         with open(file,'wb') as f:
  17.             f.write(c)
复制代码


这段代码是我想写来联系爬虫的,从这行【 for m in range(len(imglist)):】起,逻辑有点问题,前面是获取爬到的内容,下面新建文件,把内容保存进去,但是这样新建的文件后面的会把前面的覆盖掉,应该怎么修改这两个for的逻辑,保证每次获取的内容写到对应的文件啊?谢谢
最佳答案
2020-4-25 12:27:32
你第二个for循环有逻辑问题,这样写就是每下载一张图片就循环保存n次。下载完肯定N张图片都是最后一次下载的那张。
  1. import re
  2. import urllib.request as ur

  3. url = 'http://jandan.net/ooxx/MjAyMDA0MjQtMjAx#comments'
  4. req = ur.Request(url)
  5. req.add_header('user-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36')
  6. response = ur.urlopen(req)
  7. html = response.read().decode('utf-8')
  8. p = r'<img src="//wx.+\.jpg'
  9. imglist = re.findall(p,html)
  10. for i  in range(len(imglist)):
  11.     a = imglist[i].split('//',1)[1]
  12.     b = 'http://'+a
  13.     c = ur.urlopen(b).read()
  14.     file = str(i+1)+'.jpg'
  15.     with open(file,'wb') as f:
  16.         f.write(c)
复制代码

纯手机编辑的没有测试,如果有错误请提醒
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-25 12:03:24 | 显示全部楼层
求助大佬们
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-25 12:27:32 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
你第二个for循环有逻辑问题,这样写就是每下载一张图片就循环保存n次。下载完肯定N张图片都是最后一次下载的那张。
  1. import re
  2. import urllib.request as ur

  3. url = 'http://jandan.net/ooxx/MjAyMDA0MjQtMjAx#comments'
  4. req = ur.Request(url)
  5. req.add_header('user-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36')
  6. response = ur.urlopen(req)
  7. html = response.read().decode('utf-8')
  8. p = r'<img src="//wx.+\.jpg'
  9. imglist = re.findall(p,html)
  10. for i  in range(len(imglist)):
  11.     a = imglist[i].split('//',1)[1]
  12.     b = 'http://'+a
  13.     c = ur.urlopen(b).read()
  14.     file = str(i+1)+'.jpg'
  15.     with open(file,'wb') as f:
  16.         f.write(c)
复制代码

纯手机编辑的没有测试,如果有错误请提醒
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-25 13:14:07 | 显示全部楼层
谢谢楼上,明白了如何处理这种双层循环的问题了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-25 13:15:30 | 显示全部楼层
hrp 发表于 2020-4-25 12:27
你第二个for循环有逻辑问题,这样写就是每下载一张图片就循环保存n次。下载完肯定N张图片都是最后一次下载 ...

运行成功了,。谢谢大神
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 01:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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