【问题标题】:How to remove URL with error from the list?如何从列表中删除有错误的 URL?
【发布时间】:2020-03-25 13:02:38
【问题描述】:

我有超过 1000 个 URL 的列表(这些 URL 用于下载报告)保存在 .csv 文件中。 一些 URL 有404 error,我想找到一种方法将它们从列表中删除。

我设法编写了一个代码来识别下面哪个 URL 无效(对于 python 3)。但是,鉴于有许多 URL,我不知道如何自动从列表中删除这些 URL。谢谢!

from urllib.request import urlopen
from urllib.error import HTTPError
try:
   urlopen("url")
except HTTPError as err:
   if err.code == 404:
      print ('invalid')
   else:
      raise 

【问题讨论】:

    标签: python html error-handling


    【解决方案1】:

    你可以用另一个列表保存404 url​​(如果404 url​​小于普通url),然后获取差异集,所以:

    from urllib.request import urlopen
    from urllib.error import HTTPError
    
    exclude_urls = set()
    try:
       urlopen("url")
    except HTTPError as err:
       if err.code == 404:
          exclude_urls.add(url)
    
    valid_urls = set(all_urls) - exclude_urls
    
    

    【讨论】:

      【解决方案2】:

      考虑列表 A 包含所有 url。

      A = A.remove("invalid_url")
      

      【讨论】:

        【解决方案3】:

        你可以这样做:

        from urllib.request import urlopen
        from urllib.error import HTTPError
        
        def load_data(csv_name):
           ...
        def save_data(data,csv_name):
           ...
        
        links=load_data(csv_name)
        new_links=set()
        for i in links:
            try:
                urlopen("url")
            except HTTPError as err:
               if err.code == 404:
                   print ('invalid')
            else:
                new_links.add(i)
        save_data( list(new_links),csv_name)
        

        【讨论】:

          【解决方案4】:

          创建一个循环并在 finally 语句中将有效 url 写入新的 csv 文件将是最简单的解决方案。

          【讨论】:

            猜你喜欢
            • 2023-03-19
            • 2013-04-01
            • 2011-08-03
            • 1970-01-01
            • 2022-11-02
            • 1970-01-01
            • 2021-12-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多