разобрать HTML-код, чтобы найти поле - PullRequest
1 голос
/ 31 декабря 2008

У меня есть эти страницы http://www.elseptimoarte.net/. На странице есть поле поиска. Если я добавлю, например, "Бэтмен", это даст мне несколько результатов поиска с URL каждого результата: http://www.elseptimoarte.net/busquedas.html?cx=003284578463992023034%3Alraatm7pya0&cof=FORID%3A11&ie=ISO-8859-1&oe=ISO-8859-1&q=batman#978

Я хотел бы проанализировать HTML-код, чтобы получить URL-адрес, например, для первой ссылки: Пример: www.elseptimoarte.net/peliculas/batman-begins-1266.html

Проблема в том, что я использую curl (в bash), но когда я делаю curl -L -s http://www.elseptimoarte.net/busquedas.html?cx=003284578463992023034%3Alraatm7pya0&cof=FORID%3A11&ie=ISO-8859-1&oe=ISO-8859-1&q=batman#978, он не дает ссылку.

Любая помощь?

Большое спасибо и извините за мой английский!

Ответы [ 6 ]

1 голос
/ 31 декабря 2008

Это может быть не совсем то, что вы ищете, но это дает мне тот же ответ, что и ваш пример Возможно, вы можете настроить его в соответствии с вашими потребностями:

Из bash введите:

$ wget -U 'Mozilla/5.0' -O - 'http://www.google.com/search?q=batman+site%3Awww.elseptimoarte.net' | sed 's/</\
</g' | sed -n '/href="http:\/\/www\.elseptimoarte\.net/p'

"

Следующим был мой вывод:

<a href="http://www.elseptimoarte.net/peliculas/batman-begins-1266.html" class=l>
<a href="http://www.elseptimoarte.net/peliculas/batman:-the-dark-knight-30.html" class=l>El Caballero Oscuro (2008) - El Séptimo Arte
<a href="http://www.elseptimoarte.net/-batman-3--y-sus-rumores-4960.html" class=l>&#39;
<a href="http://www.elseptimoarte.net/esp--15-17-ago--batman-es-lider-y-triunfadora-aunque-no-bate-record-4285.html" class=l>(Esp. 15-17 Ago.) 
<a href="http://www.elseptimoarte.net/peliculas/batman-gotham-knight-1849.html" class=l>
<a href="http://www.elseptimoarte.net/cine-articulo541.html" class=l>Se ponen en marcha las secuelas de &#39;
<a href="http://www.elseptimoarte.net/trailers-de-buena-calidad-para--indiana--e--batman--3751.html" class=l>Tráilers en buena calidad de &#39;Indiana&#39; y &#39;
<a href="http://www.elseptimoarte.net/usa-8-10-ago--impresionante--batman-sigue-lider-por-4%C2%AA-semana-consecutiva-4245.html" class=l>(USA 8-10 Ago.) Impresionante. 
<a href="http://www.elseptimoarte.net/usa-25-27-jul--increible--batman-en-su-segunda-semana-logra-75-millones-4169.html" class=l>(USA 25-27 Jul.) Increíble. 
<a href="http://www.elseptimoarte.net/cine-articulo1498.html" class=l>¿Aparecerá Catwoman en &#39;
1 голос
/ 31 декабря 2008

Вы не получаете ссылку, используя cURL, потому что страница использует Javascript для получения этих данных.

Используя FireBug, я нашел реальный URL-адрес здесь - довольно чудовищно!

0 голосов
/ 01 января 2009

Есть Watir для Java

А если вы используете .NET C # / VB, вы можете использовать WatiN , который является отличным инструментом для работы с браузером.

Это своего рода среда тестирования с инструментами для манипулирования DOM браузера и работы с ним, но я считаю, что вы также можете использовать их вне контекста «тестирования».

0 голосов
/ 01 января 2009

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

Вы можете использовать curl, если у вас есть какие-то предпочтения, хотя я думаю, что wget больше подходит. В приведенной выше команде просто замените «wget» на «curl» и «-U» на «-A». Опустите '-O -' (я считаю, что curl по умолчанию равен stdout, если не на вашей машине, используйте соответствующий флаг) и оставьте все остальное таким же. Вы должны получить тот же вывод.

0 голосов
/ 01 января 2009

Pepe

Вот команда, которую вы можете использовать, чтобы получить то, что вы хотите:

$ wget -U 'Mozilla/5.0' -O - 'http://www.google.com/search?q=batman+site%3Awww.elseptimoarte.net' | sed 's/</\                                                            
</g' | sed -n 's/<a href="\(http:\/\/www\.elseptimoarte\.net[^"]*\).*$/\1/gp' > myfile.txt

Это небольшое изменение вышеуказанной команды. Размещает разрывы строк между URL, но не составит труда изменить его, чтобы получить точный вывод.

0 голосов
/ 31 декабря 2008

Я дам вам более подробный ответ из командной строки через секунду, но в то же время, вы рассматривали вопрос об использовании Yahoo Pipes? Теперь это не просто подтверждение концепции, но в ней есть все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...