Сортировка Python, чтобы избежать "KeyError: 'href'" - PullRequest
0 голосов
/ 19 сентября 2018

Я использую приведенный ниже код для сортировки ссылок:

links = set(soup.findAll('a'))
links = sorted(links, key=lambda x: x['href'], reverse=True)

иногда я получаю сообщение об ошибке:

1 Ответ

0 голосов
/ 19 сентября 2018

Иногда веб-дизайнеры включают якоря ( теги) без атрибута href, то есть якоря, которые не ссылаются на какие-либо URL-адреса.Одна из причин, по которой это полезно, заключается в том, что вы можете ссылаться на разделы на веб-странице:

<html>
    <body>
        <a name="first"></a>
        <p>blah</p>
        <a name="second"></a>
        <p>blah2</p>
    </body>
</html>

Выше, если вы перейдете на страницу # second, браузер установит привязку с соответствующим именем в верхней частиpage.

Чтобы исправить свой код, вы можете сначала отфильтровать ссылки на наличие атрибута href:

links = filter(lambda x: x.has_attr('href'), links)
...