Как осуществлять навигацию по страницам на основе PHP с помощью WGET?

Как осуществлять навигацию по страницам на основе PHP с помощью WGET?

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

  • WGET все страницы с сайта, которые содержат "meaning-of", в одну папку на моем жестком диске, с чем-то вроде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 другой страницы, как обычно:

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

Я поискал и нашел JS pagingFunction:

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

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


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

решение1

У этого сайта особенно странный дизайн. Но заметьте, 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 так же, как это сделал бы человек.

Связанный контент