В настоящее время я работаю над фрагментом кода, который работает для нескольких веб-сайтов, но при повторном запуске веб-сайта ниже я получаю сообщение об ошибке. IndexError: индекс списка вне допустимого диапазона. Сначала я думал, что мой xpath недействителен, но после дальнейшего изучения xpath я знаю, что он правильный. Мое единственное другое, хотя это то, что мне может потребоваться предоставить пользовательский агент браузера и т. Д., Чтобы имитировать доступ браузера к веб-сайту.
вот часть кода, которая терпит неудачу
def safeweb(host):
print "[*] Launching Norton Safeweb plugin against " + host
url = 'http://safeweb.norton.com/report/show?url=' + host
r = requests.get(url)
html = r.text
#print html
parser = etree.HTMLParser()
tree = etree.parse(StringIO.StringIO(html), parser)
#reporting starts here
summary = tree.xpath("//*[@id='siteSummary']/table/tbody/tr[1]/td[2]/div/div[1]/div[2]/div")
#print len(summary)
print "[*] Summary: " + summary[0].text
User-Agent
, чтобы узнать, дискриминирует ли сайт парсеры? - person Ian Stapleton Cordasco   schedule 19.04.2013User-Agent
, вы добавляетеheaders={'User-Agent': '...'}
к своему вызову (послеurl
), но, судя по вашему комментарию к ответу Мартейна, у вас проблема с выражением пути. Вы получитеIndexError
, выполнив также следующее:a = []; print a[0]
, так что ваш итоговый список почти наверняка будет пустым, если вы его распечатаете. - person Ian Stapleton Cordasco   schedule 19.04.2013