我已经用Google搜索了一种解决方案,可以读取文本文件中的一堆URL,并测试每个URL是否有效。任何简单或复杂的都可以。简单一点可能更好。也许得到200条回复是必须的。就像我说的,我测试了一些我在网上找到的脚本,这些脚本不起作用。有时人们想看看已经尝试过的东西,但是我认为发布不起作用没有任何意义。
作为奖励,我想知道是否存在一种方法来浏览浏览器中的所有书签,特别是Firefox,并测试所有URL是否有效。我不确定这是否可行,但这将是一个不错的选择!
TIA大家。
答案 0 :(得分:1)
import requests
with open('urls.txt', 'r') as file:
urls = file.read().splitlines()
for url in urls:
r = requests.get(url)
sc = r.status_code
if sc == 200:
valid = 'Valid'
else:
valid = "Not valid"
print(f'URL: {url}')
print(f'Status code: {sc}')
print(f'{valid}')
urls.txt每行有一个URL
您还可以将.read()。splitlines()交换为.readlines(),然后与.strip()循环。
编辑1
对于错误的网址,请使用try / except:
for url in urls:
try:
r = requests.get(url)
sc = r.status_code
if sc == 200:
valid = 'Valid'
else:
valid = "Not valid"
print(f'URL: {url}')
print(f'Status code: {sc}')
print(f'{valid}')
except requests.exceptions.RequestException as e:
print(f'URL: {url}')
print('Error')
print(e)
您可以针对不同的例外对其进行自定义;看到这里:
https://2.python-requests.org//en/latest/user/quickstart/#errors-and-exceptions
答案 1 :(得分:0)
您可以按以下方式单层执行此操作:
[url for url in open('urls.txt').readlines() if requests.get(url.strip()).ok]
请注意,将内容包装在try/except
中可能会更好,因为通过requests
完成的许多请求将收到requests.exceptions.ConnectionError
而不是状态码(如果无法到达)主机根本就是无效的网址等。