Я создал таблицу основных различий между elasticsearch и Solr и splunk, вы можете использовать ее как обновление 2016:
Я полагаю, что если вы не нашли какой-то конкретный элемент, то попытка получить elem.text
из него выдает исключение. Если это так, то вы можете сделать это:
d["address"] = item.find("span", {"itemprop":"streetAddress"}).text if item.find("span", {"itemprop":"streetAddress"}) else "-"
или другим способом избежать исключения, но таким образом вы не сможете установить значение по умолчанию, например "-":
d["address"] = item.find("span", {"itemprop":"streetAddress"}) and item.find("span", {"itemprop":"streetAddress"}).text