【问题标题】: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 文件将是最简单的解决方案。