熊猫打字 发表于 2020-4-25 01:18:39

for循环逻辑问题,求助


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 iin imglist:
    a = i.split('//',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:03:24

求助大佬们

hrp 发表于 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 iin range(len(imglist)):
    a = imglist.split('//',1)
    b = 'http://'+a
    c = ur.urlopen(b).read()
    file = str(i+1)+'.jpg'
    with open(file,'wb') as f:
      f.write(c)
纯手机编辑的没有测试,如果有错误请提醒

熊猫打字 发表于 2020-4-25 13:14:07

谢谢楼上,明白了如何处理这种双层循环的问题了

熊猫打字 发表于 2020-4-25 13:15:30

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

运行成功了,。谢谢大神
页: [1]
查看完整版本: for循环逻辑问题,求助