Deutsch

Как вытащить ссылки из файла?

662  1 2 все
PisAtel2006 завсегдатай13.08.10 01:29
NEW 13.08.10 01:29 
Как вытащить все ссылки из файла? Нужны только они и ничего более.... Весь остальной мусор должен отсеятся. Заранее спасибо.
Блог о современных пластиковых окнах.http://fenster-tueren.blogspot.com/Задай вопрос и получи ответ по теме.rus-de.blogspot.com
#1 
Murr_0003 завсегдатай13.08.10 03:28
NEW 13.08.10 03:28 
в ответ PisAtel2006 13.08.10 01:29
В общем случае - никак.
В частном - если известен формат ссылок и формат файла - что-то можно сделать...
#2 
compman посетитель13.08.10 19:57
compman
NEW 13.08.10 19:57 
в ответ Murr_0003 13.08.10 03:28, Последний раз изменено 13.08.10 19:58 (compman)
Разговор немого с глухим Какой файл? Какой формат????????? Какие ссылки? О чём речь-то вообще?
#3 
PisAtel2006 завсегдатай13.08.10 23:50
NEW 13.08.10 23:50 
в ответ compman 13.08.10 19:57, Последний раз изменено 13.08.10 23:51 (PisAtel2006)
html файл, извлечь надо гиперссылкии те что сининьким обычно выделены. И текст по возможности. Убрать надо все остальные тэги форматирования html файла.
Блог о современных пластиковых окнах.http://fenster-tueren.blogspot.com/Задай вопрос и получи ответ по теме.rus-de.blogspot.com
#4 
Murr_0003 завсегдатай14.08.10 00:15
NEW 14.08.10 00:15 
в ответ PisAtel2006 13.08.10 23:50
html файл
------
Ну что же - полагаю - локальный файл.
гиперссылкии ... текст по возможности
------
Простой парсер - все что между <a> и </a>.
Если Я правильно понимаю, то простейший вариант - пустяковая програмка на Перле сделает работу.
Второй по сложности - XSLT и прописать его в начале файла.
#5 
voxel3d коренной житель14.08.10 00:31
voxel3d
NEW 14.08.10 00:31 
в ответ PisAtel2006 13.08.10 23:50, Последний раз изменено 14.08.10 01:06 (voxel3d)
Perl:
a.html:
<a href="http://www.google.com">Google</a>
<a href="http://www.apple.com">Apple</a>
ext.pl:
#!/usr/bin/perl
use strict;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->get( $some_url );
my @links = $mech->links();
for my $link ( @links ) {
printf "%s, %s\n", $link->text, $link->url;
}
результат:
Google, http://www.google.com
Apple, http://www.apple.com


$some_url заменить на урл к файлу, если нужен файл, т.е. если виндовс и файл лежит в C:\a.html, то будет 'file:///C:/a.html'.

Dropbox - средство синхронизации и бэкапа файлов.
#6 
voxel3d коренной житель14.08.10 00:57
voxel3d
NEW 14.08.10 00:57 
в ответ Murr_0003 14.08.10 00:15
фтопку XSLT, перл рулит.
Dropbox - средство синхронизации и бэкапа файлов.
#7 
Murr_0003 завсегдатай14.08.10 01:29
NEW 14.08.10 01:29 
в ответ voxel3d 14.08.10 00:57
Так не на много сложнее. Для меня - даже проще на порядок - не надо изучать еще один язык...
#8 
voxel3d коренной житель14.08.10 01:36
voxel3d
NEW 14.08.10 01:36 
в ответ Murr_0003 14.08.10 01:29
Если также просто, покажите.
Dropbox - средство синхронизации и бэкапа файлов.
#9 
  femidav местный житель14.08.10 02:44
14.08.10 02:44 
в ответ voxel3d 14.08.10 00:57, Последний раз изменено 14.08.10 02:46 (femidav)
Можно прицепить к файлу пару строчек на javascript и jquery. А XSLT может не подойти хотя бы потому что HTML не обязан быть вэлидным XML. Если же это вэлидный XML, то нефиг изобретать велосипед (то же самое фактически, только на PHP для кучи):
<?php
$document = new DOMDocument();
$document->loadHTMLFile($url);
foreach( $document->getElementsByTagName('a') as $link )
echo $link->getAttribute('href') . "\n";


#10 
alexnaum местный житель14.08.10 10:19
alexnaum
NEW 14.08.10 10:19 
в ответ femidav 14.08.10 02:44
Что то мне подсказывает, что ТС хочет просто граббить с чужих сайтов линки, не более того...
Если я вдруг прав, то все можно средствами браузера, например, для ФФ есть аддон - вот он - после его установки в меню Page info появляется доп. пункт - Links, ну и больше ничего не нада..Для оперы полагаю тоже все есть..
#11 
Vovan(ator) знакомое лицо14.08.10 10:33
Vovan(ator)
NEW 14.08.10 10:33 
в ответ alexnaum 14.08.10 10:19
В ответ на:
Что то мне подсказывает...

Мне как то один гаврик предложил с одной CD тоже ссылки и емаил адреса вытянуть.
Сказал, что всё легально.
Когда я лицензию этого диска прочитал, то понял, что мне светило бы как минимум тысячи так 60 евро штрафу,
ну и ему тоже.
Фирма сделавшая этот диск, вставила ловушки в него.
И эти ловушки мог миновать только тот, кто покупал лицензию на определённое количество адресов.
#12 
voxel3d коренной житель14.08.10 10:47
voxel3d
NEW 14.08.10 10:47 
в ответ Vovan(ator) 14.08.10 10:33
Что за ловушки и что содержал диск?
Dropbox - средство синхронизации и бэкапа файлов.
#13 
Vovan(ator) знакомое лицо14.08.10 13:01
Vovan(ator)
NEW 14.08.10 13:01 
в ответ voxel3d 14.08.10 10:47
Диск содержал всю контактную информацию о придприятиях в транспортной сфере Германии и австрии,
может даже полностью европы, не помню уже.
А ловушки были следующего плана.
Среди нормальных адресов были подставные,
ты как рассыльщик собственной рекламы,
рассылаешь естественно все свои данные по адресам находящимся на диске.
Если у тебя есть лицензия, ты получаешь код, при помощи которого ты отключаешь эти адреса-ловушки.
А если ты нелегально пытаешся вытащить эти адреса, то с большой вероятностью отошлёшь
свою рекламу на подставной адрес.
ну и потом естественно начнуться разборки
Ну и помимо всего, диск был зашифрован (verschlusselt)
Мне пришлось долго повозиться, пока я хоть что то смог нормально прочитать.
А потом чёт очень захотелось почитать AGB и лицензию, с чего это они так это всё заперли
Ну и естественно, как я лицензию прочитал, и всю документацию,
а потом "владельцу" диска сообщил, так он сразу от своих намерений отказался
#14 
Murr_0003 завсегдатай14.08.10 13:32
NEW 14.08.10 13:32 
в ответ voxel3d 14.08.10 01:36
Примерно так:
В ответ на:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="a">
<xsl:value-of select="@href"/><br />
</xsl:template>

<xsl:template match="*">
<xsl:apply-templates />
</xsl:template>

</xsl:stylesheet>

Если надо еще что-то - меняется содержимое в <xsl:template match="a">
#15 
Murr_0003 завсегдатай14.08.10 17:26
NEW 14.08.10 17:26 
в ответ femidav 14.08.10 02:44
А XSLT может не подойти хотя бы потому что HTML не обязан быть вэлидным XML.
-------
Это - да. Правда всегда есть возможность провести преобразование html <-> xhtml.
$document->getElementsByTagName('a')
------
У document обычно доступно свойство LINKS...
#16 
  femidav местный житель14.08.10 20:03
NEW 14.08.10 20:03 
в ответ Murr_0003 14.08.10 17:26
В ответ на:
Это - да. Правда всегда есть возможность провести преобразование html <-> xhtml.

Если HTML настолько покоцанный как на этом сайте, то преобразование автоматически будет сложновато сделать.
В ответ на:
У document обычно доступно свойство LINKS...

Ты всегда такой невнимательный? document - это не более чем название переменной. Я мог бы и $foo->getElementsByTagName('a') написать.
#17 
Murr_0003 завсегдатай14.08.10 22:46
NEW 14.08.10 22:46 
в ответ femidav 14.08.10 20:03
преобразование автоматически будет сложновато сделать.
-----
Save as и опция xhtml?
Но - Да, большинство источников отдают грязный html и сам html не есть xhtml...
Ты всегда такой невнимательный?
-----
Я достаточно внимательный - new DOMDocument() - должно давать после загрузки html что-то с уже отфильтрованными с линками...
Ну может и ошибся, но ровно на то, какой именно DOMDocument используется - возьмешь нужный и все будет.
Там, в принципе, есть совсем простое решение - JS + FSO, но надо разрешать использование FSO, а это не есть хорошо... Потому Я его и не упоминал...
#18 
  femidav местный житель14.08.10 23:07
NEW 14.08.10 23:07 
в ответ Murr_0003 14.08.10 22:46, Последний раз изменено 14.08.10 23:10 (femidav)
В ответ на:
Я достаточно внимательный - new DOMDocument() - должно давать после загрузки html что-то с уже отфильтрованными с линками...

Нет, не внимательный. Ясно было, что речь об этом: http://de.php.net/manual/de/class.domdocument.php
В ответ на:
Там, в принципе, есть совсем простое решение - JS + FSO, но надо разрешать использование FSO, а это не есть хорошо...

Зачем FSO??
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type='text/javascript'>
$(function () {
var text = "";
$('a').each(function() {
text += $(this).attr("href") + "\n";
});
$('body').prepend("<textarea id='links' rows='10' style='width:100%'>" + text + "</textarea>");
});
</script>


Хотя можно конечно с минимальными затратами это как add-on оформить, и даже сразу в sqlite писать.

#19 
Murr_0003 завсегдатай15.08.10 00:57
NEW 15.08.10 00:57 
в ответ femidav 14.08.10 23:07
Ясно было, что речь об этом
------
Я не смотрел РНР и весьма невнятно представляю какой из DOMDocument'ов там используется и как заменяется другим.
В СБилдере и .Нет Я выбираю тот, который ближе к задаче - с линками...
Просто выбери нужный.
Зачем FSO??
-----
А куда его выгружать?
с минимальными затратами это как add-on оформить
------
Это будет проще чем перловый скрипт voxel3d или мой XSLT? Особенно в плане обработки пары тысяч файликов в баче?
#20 
1 2 все