crins 发表于 2022-12-19 09:19:04

循环出错

作为初学者,模仿教程写出了这段下载漫画的代码,在网站所有页面能正常加载图片的时候正常运行,一旦某一章节的图片失效,就会中断运行
有大神可以帮忙解决跳过出错继续下一循环吗?

import requests
import parsel
import os
import re

resp = requests.get('https://www.xhhm.com/plus/list-20.html').text
selecrot= parsel.Selector(resp)
url_list = selecrot.css('.detail-list-select li a::attr(href)').getall()
title_list = selecrot.css('.detail-list-select li a::text').getall()
for title,url in zip(title_list,url_list):
      print(f'------------正在下载{title}--------------')
      title = re.sub(r'[\/:*?"<>|.]',"",title)
      if not os.path.exists('./001/'+title):
                os.mkdir('./001/'+title)
      response = requests.get(f'https://www.xhhm.com{url}')
      html_date = response.text
      selector_1 = parsel.Selector(html_date)
      img_list = selector_1.css('.player img::attr(src)').getall()
      index = 1
      for img in img_list:
                img_date = requests.get(img).content
                with open(f'./001/{title}/{str(index)} .jpg', mode='wb') as f:
                        f.write(img_date)
                print(f'第{str(index)}页,下载成功!!!')
                index += 1
      print(title, '下载成功')

青出于蓝 发表于 2022-12-19 09:26:25

try except

crins 发表于 2022-12-19 09:53:37

青出于蓝 发表于 2022-12-19 09:26
try except

我找到了可以用这个语句处理,作为一个代码小白,不如何加入到这段代码里,能再具体点吗?谢谢

KeyError 发表于 2022-12-19 10:18:16

crins 发表于 2022-12-19 09:53
我找到了可以用这个语句处理,作为一个代码小白,不如何加入到这段代码里,能再具体点吗?谢谢

哪一条语句出错就放在哪.{:10_277:}

青出于蓝 发表于 2022-12-19 10:22:45

crins 发表于 2022-12-19 09:53
我找到了可以用这个语句处理,作为一个代码小白,不如何加入到这段代码里,能再具体点吗?谢谢

抱歉哈,目前电脑不在手边{:10_245:}

tommyyu 发表于 2022-12-19 10:24:36

看不懂代码,但是凭感觉加了几个try-except{:10_282:}import requests
import parsel
import os
import re

resp = requests.get('https://www.xhhm.com/plus/list-20.html').text
print('1')
selecrot= parsel.Selector(resp)
print('2')
url_list = selecrot.css('.detail-list-select li a::attr(href)').getall()
print('3')
title_list = selecrot.css('.detail-list-select li a::text').getall()
for title,url in zip(title_list,url_list):
    try:
      print(f'------------正在下载{title}--------------')
      title = re.sub(r'[\/:*?"<>|.]',"",title)
      if not os.path.exists('./001/'+title):
            os.mkdir('./001/'+title)
      response = requests.get(f'https://www.xhhm.com{url}')
      html_date = response.text
      selector_1 = parsel.Selector(html_date)
      img_list = selector_1.css('.player img::attr(src)').getall()
      index = 1
      for img in img_list:
            try:
                img_date = requests.get(img).content
                with open(f'./001/{title}/{str(index)} .jpg', mode='wb') as f:
                  f.write(img_date)
                print(f'第{str(index)}页,下载成功!!!')
                index += 1
            except:
                print(f'第{str(index)}页,下载失败')
      print(title, '下载成功')
    except:
      print(title, '下载失败')

青出于蓝 发表于 2022-12-19 10:58:51

网站网址正确?无响应

tommyyu 发表于 2022-12-19 11:16:46

青出于蓝 发表于 2022-12-19 10:58
网站网址正确?无响应

我猜是外网

crins 发表于 2022-12-19 11:50:25

tommyyu 发表于 2022-12-19 10:24
看不懂代码,但是凭感觉加了几个try-except

非常感谢tommyyu,同时也感谢青出于蓝提出建议。
因为本人小白,不懂怎么在语句里从错误点开始循环,所以重新跑了一次。
错误点在20多章,所以耗费的时间有点长,导致现在才回复。现在可以正常的跳过无法获取数据的问题。

网址是我故意漏写的,因为不可描述的原因{:5_92:}xhhm8

epaysh 发表于 2022-12-19 12:46:56

学习了,谢谢提供学习的机会
页: [1]
查看完整版本: 循环出错