我有一个网址列表,我想检查其中是否有任何网址有效。我想这样做是因为我想使用谷歌 API 在每个链接中进行搜索,但是当我运行它时,我收到消息"错误请求",这似乎是因为有些链接在列表中不起作用。
我无法进入所有链接,但对于其中一些,我在谷歌浏览器上收到消息:
- 这是一个错误。
在此服务器上找不到请求的 URL/playMsg.html。
有没有办法做到这一点?谢谢。
这是我
代码的简化版本,我在某些项目中使用。
逻辑很简单:
- 将
url
发送到server_response
- 如果状态 == 200(
url
有效)->返回ok
- 如果状态 == 404,请尝试每 10 秒重新检查
url
5 次(覆盖连接不良的情况) - 如果在 5 次尝试后状态仍然是 404 ->返回
bad
需要提一下,此代码不涵盖其他状态(自己实现或if status == 404:
更改为if status != 200:
)
import requests
from time import sleep
def server_response(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}
tries = 5
while True:
response = requests.get(url, headers=headers, stream=True)
status = response.status_code
if status == 404: # u can change it to 'if status != 200:' in order to cover all status codes except 200
print('n###################################')
print('### THERE IS CONNECTION PROBLEM ###')
print('Response code: %d nURI: %s' % (status, url))
print('###################################n')
sleep(10)
tries -= 1
elif status == 200:
return 'ok'
if tries == 0:
return 'bad'
list_of_urls = ['www.site1.com', 'www.site2.com']
for url in list_of_urls:
status = server_response(url)
if status == 'ok':
# do something
else:
# do something