Словарь Python был неупорядочен перед Python 3.6. В CPython реализации Python 3.6 словарь сохраняет порядок вставки. Из Python 3.7 это станет языковой функцией.
Если вы хотите отсортировать вложенный dict, включая субдиск внутри, вы можете сделать:
test_dict = {'a': 1, 'c': 3, 'b': {'b2': 2, 'b1': 1}}
def dict_reorder(item):
return {k: sort_dict(v) if isinstance(v, dict) else v for k, v in sorted(item.items())}
reordered_dict = dict_reorder(test_dict)
https://gist.github.com/ligyxy/f60f0374defc383aa098d44cfbd318eb
Посмотрите на использование WWW:: Механизируйте модуль для этого. Это выберет Ваши веб-страницы для Вас и затем даст Вам легкий к работе со списками URL.
my $mech = WWW::Mechanize->new();
$mech->get( $some_url );
my @links = $mech->links();
for my $link ( @links ) {
printf "%s, %s\n", $link->text, $link->url;
}
Довольно простой, и если Вы надеетесь перейти к другим URL на той странице, это еще более просто.
Механик является в основном браузером в объекте.
Мне нравится использовать pQuery для вещей как это...
use pQuery;
pQuery( 'http://www.perlbuzz.com' )->find( 'a' )->each(
sub {
say $_->innerHTML . q{, } . $_->getAttribute( 'href' );
}
);
Также контроль эта предыдущая Эмуляция вопроса о stackoverflow.com закона как функциональность в Perl или Python для подобных ответов.
Другой способ сделать это должно использовать XPath для запросов проанализированного HTML. Это необходимо в сложных случаях, как извлечение все ссылки в отделении с определенным классом. Используйте HTML:: TreeBuilder:: XPath для этого.
my $tree=HTML::TreeBuilder::XPath->new_from_content($c);
my $nodes=$tree->findnodes(q{//map[@name='map1']/area});
while (my $node=$nodes->shift) {
my $t=$node->attr('title');
}
Sherm рекомендовал HTML:: LinkExtor, который является почти, что Вы хотите. К сожалению, это не может возвратить текст в < тег a>.
Andy рекомендовал WWW:: Механизируйте . Это - вероятно, лучшее решение.
, Если Вы находите что WWW:: Механизируйте не к Вашей симпатии, попробуйте HTML:: TreeBuilder. Это создаст подобное DOM дерево из HTML, который можно тогда искать ссылки, Вы хотите и извлекаете любое соседнее содержание, которое Вы хотите.
HTML является структурированным языком разметки, который должен быть проанализирован для извлечения его значения без ошибок. Модуль, который перечислил Sherm, проанализирует HTML и извлечет ссылки для Вас. Специальные основанные на регулярном выражении решения могли бы быть приемлемыми, если Вы знаете, что Ваши исходные данные будут всегда формироваться тот же путь (не забывайте атрибуты), но синтаксический анализатор является почти всегда правильным ответом для обработки структурированного текста.
Или рассмотрите HTML улучшения:: LinkExtor, чтобы сделать то, что Вы хотите, и представление изменений в авторе.
Взгляните на HTML:: LinkExtractor и HTML:: LinkExtor, часть HTML:: Синтаксический анализатор пакет.
HTML:: LinkExtractor подобен HTML:: LinkExtor, за исключением того, что помимо получения URL, Вы также получаете текст ссылки.