Я пытаюсь придумать список возможных имен для нашего следующего мальчика и просматривал сайт IndiaParenting. У каждого имени на сайте есть страница с подробной информацией по URL-адресу, подобному этому http://www.indiaparenting.com/babynames/meaning-of-Aadesh.shtml . Мне бы хотелось, чтобы имя было похоже на нашего первенца, и я пытаюсь сделать следующее:

  • WGET все страницы сайта, содержащие «значение», в одну папку на моем жестком диске, например wget -nc -c -nd -r -l1 -k http://www.indiaparenting.com/babynames/hindu-boy-names.php -A "meaning-of*" -I /babynames
  • Сделайте что-то вроде dir > filenames.txt чтобы поместить все в один текстовый файл.
  • Разобрать сгенерированный файл для конкретного регулярного выражения, чтобы найти возможные имена. Первого сына зовут Ранвир, и мы ищем имена, начинающиеся с N или R, поэтому регулярное выражение, вероятно, выглядит примерно так: [NR][aeiou][^aeiou][^aeiou][aeiou]{2}[^aeiou] .
  • Вручную пройдите окончательный список с мадам и выберите имя!

У меня проблема с Wget. Страница создается с помощью PHP, а внизу находится навигатор страниц, который не ссылается на URL другой страницы, как обычно:

Раздел пейджинга

Я посмотрел и нашел функцию paging JS:

function pagingFunction(labelName){         
    vpage = document.getElementById("pageNum");     
    pageNm = labelName;         
    vpage.value = pageNm;
    document.getElementById("frmPaging").submit();      
}

Вопрос: я думал, что рекурсивное WGETting страницы будет идти постранично, но это не так. Есть ли способ справиться с этим с помощью WGET? Если нет, есть ли другой вариант?


Другая информация: я думал о создании списка на основе регулярного выражения, но он был бы слишком длинным и в любом случае имел бы слишком много недопустимых имен, поэтому я хотел бы основывать его на реальных именах с одного из этих сайтов имен детей. Я также собираюсь связаться с сайтом, чтобы узнать, могут ли они просто выполнить запрос к своей БД и поместить имена в файл для меня, а если ничего не помогает, есть другие сайты, чтобы проверить.

1 ответ1

0

Этот сайт имеет необычный дизайн. Только примечание, PHP здесь не имеет значения.

Похоже, они загружают страницы следующим способом:

  1. Нажатие на ссылку выполняет некоторые JS.
  2. Этот JS заполняет скрытую форму с номером страницы.
  3. Затем скрипт отправляет форму, которая отправляет POST-запрос на сервер.
  4. Сервер отвечает напрямую соответствующей страницей.

У вас есть несколько вариантов здесь. Самый простой - просто написать скрипт запроса wget с --post-data в цикле, чтобы получить все страницы от 1 до n. Обратитесь к документации и сетевому монитору вашего браузера, чтобы узнать, каков фактический запрос. Например, вот что говорит сетевой монитор Firefox: тело запроса:

Content-Type: application/x-www-form-urlencoded
Content-Length: 145

pagingQuery=select+*+from+tblbabynames+where+++religion%3D%27hindu%27+and+gender%3D%27M%27+limit+0%2C30&totalRows=3097&pageNum=2&searchResultNo=0

Вы, вероятно, можете заменить pageNum=2 в цикле.

Более сложным методом было бы использовать инструментарий автоматизации браузера, такой как Selenium, для буквального перемещения по ссылкам и щелчка по ним, активируя JS так же, как это сделал бы человек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .