Сведения о вопросе

Drake

13:46, 21st August, 2020

Теги

perl   wikipedia   lwp    

Почему я не могу получить страницы Википедии с LWP::Simple?

Просмотров: 422   Ответов: 5

Я пытаюсь извлечь страницы Википедии с помощью LWP::Simple, но они не возвращаются. Настоящий кодекс:

#!/usr/bin/perl
use strict;
use LWP::Simple;

print get("http://en.wikipedia.org/wiki/Stack_overflow");

ничего не печатает. Но если я использую какую-то другую веб-страницу, скажем http://www.google.com , она отлично работает.

Есть ли какое-то другое имя, которое я должен использовать для ссылки на страницы Википедии?

Что здесь может происходить?



  Сведения об ответе

VERSUION

09:35, 21st August, 2020

Видимо Википедия блокирует LWP::Simple запросов: http://www.perlmonks.org/?node_id=695886

Вместо этого работает следующее:

#!/usr/bin/perl
use strict;
use LWP::UserAgent;

my $url = "http://en.wikipedia.org/wiki/Stack_overflow";

my $ua = LWP::UserAgent->new();
my $res = $ua->get($url);

print $res->content;


  Сведения об ответе

9090

06:16, 2nd August, 2020

Вы также можете просто установить UA в модуле LWP::Simple - просто импортируйте переменную $ua, и это позволит вам изменить базовую UserAgent:

use LWP::Simple qw/get $ua/;
$ua->agent("WikiBot/0.1");
print get("http://en.wikipedia.org/wiki/Stack_overflow");


  Сведения об ответе

COOL

01:57, 7th August, 2020

Я решил эту проблему, используя LWP:RobotUA вместо LWP::UserAgent . Вы можете прочитать документ ниже. Есть не так много различий, которые вы должны изменить.

http://lwp.interglacial.com/ch12_02.htm


  Сведения об ответе

darknet

21:06, 1st October, 2020

Потому что Википедия блокирует строку HTTP user-agent, используемую LWP::Simple.

Вы получите ответ "403 Forbidden", если попытаетесь его использовать.

Попробуйте обойти это с помощью модуля LWP::UserAgent, установив атрибут agent-attribute.


  Сведения об ответе

lats

21:06, 1st October, 2020

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

http://cpan.uwinnipeg.ca/search?запрос=Mediawiki&mode=dist


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться