Как скачать с помощью wget по маске не зная какие страницы есть?
Есть вот такого вида ссылки: somename.livejournal.com/593.html
Число перед .html может быть любое. Списка нет и число возрастает не по порядку. Следующий может быть somename.livejournal.com/22593.html, но последнее число я знаю.
Можно ли одной командой wget скачать все существующие посты? Если да - то как? Огромная просьба написать готовый ответ, потому что я покурил маны и как-то не сложилось.
По идее там регулярку как-то вставить. Либо, мне подойдет скрипт на баше с использованием wget.
Заранее благодарен.
#!/bin/bash
start= 593 #номер поста с которого начинаем брутфорсить
end=22593 #номер поста на котором заканчиваем
for (( i=start; i<=end; i++ ))
do
uri=https://somename.livejournal.com/$i.html
#скачиваем только со статусом 200
wget --server-response $uri -O $i.html 2>&1| grep -c 'HTTP/1.1 200 OK'
done
O . J, можно чуть усовершенствовать Ваше решение (сделать меньше количество запросов):
1. Открывать страницу вида somename.livejournal.com/?skip=1 (значение skip подставлять в цикле), последний номер skip можно получить, посмотрев количество записей в профиле пользователя.
2. Вытаскивать URL первой записи на полученной странице (например, первый встреченный паттерн вида "someone.livejournal.com/*.html").
3. Закачивать указанный URL.
Кстати, защита от перебора у них есть.
Причем она не работала пока скрипт один был, как только я паралельно запустил с виртуалки его же - забанили по ip.
Сделал sleep 3.1 в цикле, вторые сутки позволяет парсить.
Есть идея, куда копнуть:
- В любом посте ЖЖ есть ссылка на следующий пост и предыдущий (ссылка вида /www.livejournal.com/go.bml?journal=someone&itemid=123456&dir=next или dir=prev ).
Можно попробовать эмулировать "переход" по ссылке, а потом "вытаскивать" id получившейся записи. А вот как это сделать, пока не придумал.
Ну, надо парсер писать, анализировать страницу, искать какими тэгами ссылка обозначается и вытаскивать от туда эту ссылку. Кстати, не во всех шаблонах есть такая ссылка.