为了账号安全,请及时绑定邮箱和手机立即绑定

如何从列表中删除有错误的 URL?

如何从列表中删除有错误的 URL?

慕姐4208626 2023-10-10 10:21:40
我将 1000 多个 URL 的列表(这些 URL 用于下载报告)保存在一个.csv文件中。有些 URL 已经存在404 error,我想找到一种方法将它们从列表中删除。我设法编写了一段代码来识别下面哪个 URL 无效(对于 python 3)。但是,由于存在许多 URL,我不知道如何自动从列表中删除这些 URL。谢谢你!from urllib.request import urlopenfrom urllib.error import HTTPErrortry:   urlopen("url")except HTTPError as err:   if err.code == 404:      print ('invalid')   else:      raise 
查看完整描述

4 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您可以使用另一个列表来保存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


查看完整回答
反对 回复 2023-10-10
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

你可以这样做:


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)


查看完整回答
反对 回复 2023-10-10
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

考虑列表 A 包含所有 url。

A = A.remove("invalid_url")


查看完整回答
反对 回复 2023-10-10
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

尝试这样的事情:


from urllib.request import urlopen

from urllib.error import HTTPError


# 1. Load the CSV file into a list

with open('urls.csv', 'r') as file:

    reader = csv.reader(file)

    urls = [row[0] for row in reader]  # Assuming each row has one URL


# 2. Check each URL for validity using your code

valid_urls = []

for url in urls:

    try:

        urlopen(url)

        valid_urls.append(url)

    except HTTPError as err:

        if err.code == 404:

            print(f'Invalid URL: {url}')

        else:

            raise  # If it's another type of error, raise it so you're aware


# 3. Write the cleaned list back to the CSV file

with open('cleaned_urls.csv', 'w') as file:

    writer = csv.writer(file)

    for url in valid_urls:

        writer.writerow([url])


查看完整回答
反对 回复 2023-10-10
  • 4 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信