Функция скручивания для выбора параметров из поля выбора и автоматической отправки - PullRequest
0 голосов
/ 21 апреля 2009

Я новичок и каждый день пробую разные вещи, и всегда прихожу сюда, когда застрял в чем-то.

Я хочу написать скрипт с использованием curl и php, который идет по этой ссылке: http://tools.cisco.com/WWChannels/LOCATR/openBasicSearch.do, а затем перебирает каждую страницу для каждой страны, собирая список всех партнеров в каждой стране и сохраняя его в базе данных.

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

Проблема перед тем, как мы выберем URL страны: :: http://tools.cisco.com/WWChannels/LOCATR/BasicSearch.do и после того, как мы выберем страну, скажем, что URL Индии: http://tools.cisco.com/WWChannels/LOCATR/performBasicSearch.do, ссылка на выбранную страну отсутствует.

Идея, с которой я столкнулся, состояла в том, чтобы пройти по HTML-странице и ввести все страны в массив, а затем создать рекурсивную функцию для вызова страницы с определенной страной, но для этого нам нужно что-то свое в URL для каждой страны в рекурсивной функции. право

Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 21 апреля 2009

Ваш URL испорчен, поэтому я не вижу точной страницы, о которой вы говорите, однако , скорее всего, происходит, когда вы меняете страну, веб-сайт POST запрос на ту же страницу с переменной типа country (хотя это может быть что-то еще) со значением названия страны / идентификатора страны, который вы выбрали. Если вы просмотрите источник на странице, вы сможете увидеть имя поля ввода, которое передается. Как только вы это сделаете, при выполнении запроса cURL вы можете установить параметр cuRL из CURLOPT_POSTFIELDS, который выглядит следующим образом:

Полные данные для отправки в HTTP-операции «POST». Чтобы опубликовать файл, добавьте @ к имени файла и используйте полный путь. Это может быть либо передано в виде строки в кодировке urlen, например 'para1 = val1 & para2 = val2 & ...', либо в виде массива с именем поля в качестве ключа и данными поля в качестве значения.

Итак, помня об этом, вы бы сделали что-то вроде этого:

$ch = curl_init('http://tools.cisco.com/WWChannels/LO...BasicSearch.do');
$ch = curl_setopt($ch, CURLOPT_POSTFIELDS, array('country' => 'India'));
$ch = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
curl_close($ch);

Как я уже сказал, страна => часть Индии является обоснованным предположением относительно того, что поле может проходить. Вы должны проверить HTML, чтобы узнать сами.

1 голос
/ 12 июля 2009

Для автоматизации / очистки я бы порекомендовал вам использовать виртуальный браузер, такой как SimpleBrowser . Это часть SimpleTest, но вы можете использовать его самостоятельно.

...