鱼C论坛

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

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

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

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

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

x
import re
import urllib.request as ur

url = 'http://jandan.net/ooxx/MjAyMDA0MjQtMjAx#comments'
req = ur.Request(url)
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')
response = ur.urlopen(req)
html = response.read().decode('utf-8')
p = r'<img src="//wx.+\.jpg'
imglist = re.findall(p,html)
for i  in imglist:
    a = i.split('//',1)[1]
    b = 'http://'+a
    c = ur.urlopen(b).read()
    for m in range(len(imglist)):
        file = str(m+1)+'.jpg'
        with open(file,'wb') as f:
            f.write(c)

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

url = 'http://jandan.net/ooxx/MjAyMDA0MjQtMjAx#comments'
req = ur.Request(url)
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')
response = ur.urlopen(req)
html = response.read().decode('utf-8')
p = r'<img src="//wx.+\.jpg'
imglist = re.findall(p,html)
for i  in range(len(imglist)):
    a = imglist[i].split('//',1)[1]
    b = 'http://'+a
    c = ur.urlopen(b).read()
    file = str(i+1)+'.jpg'
    with open(file,'wb') as f:
        f.write(c)
纯手机编辑的没有测试,如果有错误请提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-25 12:03:24 | 显示全部楼层
求助大佬们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

url = 'http://jandan.net/ooxx/MjAyMDA0MjQtMjAx#comments'
req = ur.Request(url)
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')
response = ur.urlopen(req)
html = response.read().decode('utf-8')
p = r'<img src="//wx.+\.jpg'
imglist = re.findall(p,html)
for i  in range(len(imglist)):
    a = imglist[i].split('//',1)[1]
    b = 'http://'+a
    c = ur.urlopen(b).read()
    file = str(i+1)+'.jpg'
    with open(file,'wb') as f:
        f.write(c)
纯手机编辑的没有测试,如果有错误请提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-25 13:14:07 | 显示全部楼层
谢谢楼上,明白了如何处理这种双层循环的问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

运行成功了,。谢谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 20:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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