URL-адреса изображения аватара Gravatar, которые являются изображением по умолчанию, будут возвращать 404 Not Found
ошибку, если следующий параметр установлен d=404
. Например, вот URL-адреса, которые вы использовали в качестве примеров, но с набором параметров:
http://www.gravatar.com/avatar/19b2990ba88512ab38abdbbca5701d27?s=120&d=404
http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120&d=404
http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120&d=404
Предполагая, что вы определяете, используются ли изображения по умолчанию с помощью JavaScript, вы можете использовать AJAX (без отображения изображения) или обработчик ошибок (отображение изображений не по умолчанию), чтобы определить, успешно ли загружены эти изображения.
JQuery (AJAX)
// Image Exists
$.ajax({url:"http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120&d=404",type:"GET",crossDomain:true,success:(function(){console.log("Custom Gravatar");}),error:(function(){console.log("Default Gravatar");})});
// Image Does Not Exist
$.ajax({url:"http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120&d=404",type:"GET",crossDomain:true,success:(function(){console.log("Custom Gravatar");}),error:(function(){console.log("Default Gravatar");})});
Отслеживание ошибок
You can use either the jQuery load
and error
event handlers, or the HTML onload
and onerror
attributes.
$("img").load(function(e) {
e.target.parentNode.parentNode.getElementsByClassName("stat")[0].innerHTML = e.type;
}).error(function(e) {
e.target.parentNode.parentNode.getElementsByClassName("stat")[0].innerHTML = e.type;
});
table,
td {
border: 1px solid black;
border-collapse: collapse;
}
table img {
width: 48px;
height: 48px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>Image</td>
<td>Expected Result</td>
<td>Actual Result</td>
</tr>
<tr>
<td>
<img id="good" src="http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120&d=404" />
</td>
<td>load</td>
<td class="stat">Loading...</td>
</tr>
<tr>
<td>
<img id="bad" src="http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120&d=404" />
</td>
<td>error</td>
<td class="stat">Loading...</td>
</tr>
</tbody>
</table>
EDIT: OP пояснил, о чем просили
Я написал небольшой скрипт VBA в этом файле примера для итерации по первому столбцу до первого пустого ячейке, создав запросы WinHTTP с измененным URL-адресом, а затем, по запросу OP, удалив содержимое ячеек, содержащих ссылку на аватар Gravatar по умолчанию.
Чтобы запустить код в образце файла Excel:
- Excel 2003 и более ранние версии: Инструменты > Макрос > Макросы (Alt + F8) > checkGravatar
- Excel 2007 и новее: Разработчик > Макросы > проверить Граватар
Для запуска VBA вам также может понадобиться включить макросы и ссылка на MSXML.
Sub checkGravatar()
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
Dim URL As String
Dim goodStat As String
Dim badStat As String
Dim row As Integer
Dim pos As Integer
row = 1
URL = Cells(row, 1).Value
Do While Len(URL) > 0
If InStr(URL, "gravatar.com/avatar/") > 0 Then
If InStr(URL, "?") = 0 Then
URL = URL & "?d=404"
Else
If Not InStr(URL, "&d=") Then
URL = URL & "&d=404"
End If
End If
objHTTP.Open "GET", URL, False
objHTTP.send ("")
If objHTTP.Status = 404 Then
Cells(row, 1).Value = ""
Else
MsgBox "GET request failed"
End If
row = row + 1
URL = Cells(row, 1).Value
Loop
End Sub
person
andrewgu
schedule
31.07.2015
gravatar
URL-адреса, мне нужно удалить все ссылки, которые ведутthe default blue gravatar image
- person xyz   schedule 31.07.2015