Лучший ЯП для парсинга веб-сайтов
Как только возникает слово «парсинг», в первую очередь стоит вспоминать о Perl (Practical Extraction and Report Language). Для решения этой задачи там есть:


модули для работы с HTTP — как низкоуровневые, так и специальные, типа WWW::Mechanize — удобен, если надо написать скрипт, который последовательно выполняет какой-то набор операций (например надо автоматизировать какие-то действия пользователя web-интерфейсе, а API никакого не предусмотрено);
модули для асинхронной работы по HTTP (AnyEvent::HTTP) — позволяют написать робота, который без необходимости создавать множество тредов будет выполнять одновременно несколько запросов;
регулярные выражения — мощнейший инструмент для парсинга данных, и в perl его использование наиболее удобно (это часть синтаксиса языка);
библиотеки для разбора HTML в дерево (например HTML::Parser);


Python хороший скриптовый язык общего назначения, но для задач разбора данных код на Perl будет куда проще.
Возможно, Вам пригодится вот этот тестовый фрагмент кода, которым я искал блоки диретка на страницах Яндекса.

<source lang="php">
<?php

$s = file_get_contents( 'yandex.html' );

$tidy = new tidy();
$tidy->parseString( $s, array(
    'output-xml'       => true,
    'clean'            => true,
    'numeric-entities' => true
), 'utf8' );

$tidy->cleanRepair();
$xml = simplexml_load_string( tidy_get_output( $tidy ) );

$adwords = $xml->xpath( '//*[class="b-adv"]' );
var_dump( $adwords );
exit;

$tads = $xml->xpath( '//*[id="tads"]' );
var_dump( $tads );
exit;

$a = $xml->xpath( '//a[href]' );
//var_dump( $a );

array_walk( $a, function( $item ) {
    $href = $item->attributes()->href;
    if ( strpos( $href, 'start=' ) !== false )
        echo $href."\n";
    //var_dump( $attrs );
    //exit;
} );

?>
</source>