跳过图像URL当HTTP错误出现在CSV文件中时

发布于 2025-01-27 17:14:42 字数 1595 浏览 4 评论 0原文

我有一个项目,试图从网站上进行映像。我使用带有所有URL的CSV文件。我没有打开的一些URL(或者不存在)。我从Phyton中获得了HTTP错误403。我只想尝试在CSV文件中尝试下一个URL并忽略错误。

import urllib.request
import csv

with open ('urls_01.csv') as images:
    images = csv.reader(images)
    img_count = 1
    for image in images:
        urllib.request.urlretrieve(image[0],
                'images/image_{0}.jpg'.format(img_count)) 
        img_count += 1

这是错误

Traceback (most recent call last):
  File "c:\Users\Heigre\Documents\Phyton\img_test.py", line 8, in <module>
    urllib.request.urlretrieve(image[0],
  File "C:\Program Files\Python310\lib\urllib\request.py", line 241, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\Python310\lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 525, in open
    response = meth(req, response)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 634, in http_response
    response = self.parent.error(
  File "C:\Program Files\Python310\lib\urllib\request.py", line 563, in error
    return self._call_chain(*args)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

I have a project trying to imagescrape from a website. I use a csv file with all the urls. Some urls i dont have the premission to open(or they dont exist). I get a Http error 403 in phyton from those. I just want the try the next url in the csv file and ignore the error.

import urllib.request
import csv

with open ('urls_01.csv') as images:
    images = csv.reader(images)
    img_count = 1
    for image in images:
        urllib.request.urlretrieve(image[0],
                'images/image_{0}.jpg'.format(img_count)) 
        img_count += 1

This is the error

Traceback (most recent call last):
  File "c:\Users\Heigre\Documents\Phyton\img_test.py", line 8, in <module>
    urllib.request.urlretrieve(image[0],
  File "C:\Program Files\Python310\lib\urllib\request.py", line 241, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\Python310\lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 525, in open
    response = meth(req, response)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 634, in http_response
    response = self.parent.error(
  File "C:\Program Files\Python310\lib\urllib\request.py", line 563, in error
    return self._call_chain(*args)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python310\lib\urllib\request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

几味少女 2025-02-03 17:14:42

不确定是否需要导入,但是我根据您的错误输出提供了该导入。还提供了一个打印语句的想法,如果您只需要通过特定错误,可能会有所帮助...

import urllib.request
from urllib.error import HTTPError
import csv

with open ('urls_01.csv') as images:
    images = csv.reader(images)
    img_count = 1
    for image in images:
        try:
            urllib.request.urlretrieve(
                image[0],
                'images/image_{0}.jpg'.format(img_count)
            ) 
            img_count += 1
        except HTTPError as ex:
            # This will catch and hide any HTTPError the below print not tested...
            # print(ex, ex.code)
            pass

Not sure if the import is needed, but I provided it based on your error output. Also provided an idea of a print statement that might help if you need only pass on specific errors…

import urllib.request
from urllib.error import HTTPError
import csv

with open ('urls_01.csv') as images:
    images = csv.reader(images)
    img_count = 1
    for image in images:
        try:
            urllib.request.urlretrieve(
                image[0],
                'images/image_{0}.jpg'.format(img_count)
            ) 
            img_count += 1
        except HTTPError as ex:
            # This will catch and hide any HTTPError the below print not tested...
            # print(ex, ex.code)
            pass
最笨的告白 2025-02-03 17:14:42

使用尝试块捕获HTTP错误:

import urllib.request
import csv

with open ('urls_01.csv') as images:
    images = csv.reader(images)
    img_count = 1
    for image in images:
        try:
            urllib.request.urlretrieve(image[0],
                    'images/image_{0}.jpg'.format(img_count)) 
            img_count += 1
        except HTTPError:
            pass

Use a try block to catch the http error:

import urllib.request
import csv

with open ('urls_01.csv') as images:
    images = csv.reader(images)
    img_count = 1
    for image in images:
        try:
            urllib.request.urlretrieve(image[0],
                    'images/image_{0}.jpg'.format(img_count)) 
            img_count += 1
        except HTTPError:
            pass

慢慢从新开始 2025-02-03 17:14:42

使用尝试块捕获HTTP错误:


    import urllib.request
    import csv

    with open ('urls_01.csv') as images:
        images = csv.reader(images)
        img_count = 1
        for image in images:
            try:
                urllib.request.urlretrieve(image[0],
                        'images/image_{0}.jpg'.format(img_count)) 
                img_count += 1
            except HTTPError:
                pass



Use a try block to catch the http error:


    import urllib.request
    import csv

    with open ('urls_01.csv') as images:
        images = csv.reader(images)
        img_count = 1
        for image in images:
            try:
                urllib.request.urlretrieve(image[0],
                        'images/image_{0}.jpg'.format(img_count)) 
                img_count += 1
            except HTTPError:
                pass



~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文