2015-02-14 2 views
-5

Попробовал это с моим собственным выражением, чтобы заставить его работать с моим проектом. Но после нескольких часов работы в Интернете я все равно не работаю. Пробовав код ниже (не мой), но он производит только оператор «die». Мой собственный код (другой вопрос здесь) возвращает только «Нажмите любую клавишу ..» Что я делаю неправильно?LWP не работает

#!/usr/bin/perl -w 
# cookbook-rank - find rank of Perl Cookbook on Amazon 

use LWP::Simple; 

my $html = get("http://rads.stackoverflow.com/amzn/click/1565922433") 
    or die "Couldn't fetch the Perl Cookbook's page."; 
$html =~ m{Amazon\.com Sales Rank: </b> ([\d,]+) </font><br>} || die; 
my $sales_rank = $1; 
$sales_rank =~ tr[,][]d; # 4,070 becomes 4070 
print "$sales_rank\n"; 
+0

Какое сообщение об ошибке вы получаете при запуске этого сценария? – Dre

+0

http://puu.sh/fUBcn/56dd545dca.png – pierrefelipe

+2

Скопируйте/вставьте сообщение об ошибке как текст. Ссылки на изображения раздражают. – tripleee

ответ

4

die происходит, когда загруженный контент не содержит какой-либо текст, который соответствует регулярному выражению. Нет ничего плохого в LWP или самом коде, кроме предположения, что загрузка будет соответствовать. (В заявлении die лучше всего содержалось объяснение того, что пошло не так.)

+0

@ SinanÜnür Не могли бы вы предложить обоснование для вашего редактирования? Я был не очень доволен формулировкой этого отрывка, но я не уверен, что его полностью устранить - это правильное решение. – tripleee

+0

Только браузер моего мобильного телефона. Думаю, это не поддерживает эту перенаправление. Спасибо за объяснение. – tripleee

0

Похоже, что HTML-код Amazon изменился с тех пор, как этот пример был написан. Страница больше не содержит строку «Amazon.com Sales Rank». Вместо этого он теперь говорит: «Рейтинг лучших амазонок:».

Но вам нужно посмотреть источник HTML для страницы. По какой-то причине Amazon вставляет более тридцати пустых строк между этой меткой и линией, содержащей фактический рейтинг продаж.

Что является, в целом, хорошим примером того, почему скрипинг экрана - плохая идея. Вам будет гораздо лучше посоветовать использовать API продуктов Amazon.

Смежные вопросы