Изменение страницы с другого сайта

0

Извините за неопределенное имя вопроса - не знал, как его фразы.

Я создал механизм PHP для анализа веб-страниц и извлечения телефонных номеров, адресов и т.д.

Это будет использоваться клиентами для заполнения адресной книги простым вводом нового веб-адреса контактов.

Проблема, с которой я сталкиваюсь, заключается в возможности использования:

В настоящий момент сценарий просто добавляет каждый элемент (номер стационарного телефона, факс и т.д.) В другой список, и пользователь выбирает правильный вариант - с точки зрения удобства использования это тяжелая работа (откуда вы знаете, какой правильный номер контакта, не глядя на сайте)

так что мой вопрос (наконец!)

Как достичь функциональности

http://bartaz.github.io/sandbox.js/jquery.highlight.html

На другом сайте (у меня нет проблем с написанием этой функции).

FOR CLARITY ** Я хочу показать кому-то сайт elses (например, их контактную страницу) на моем сайте, но я хочу выделить элементы, которые я нашел (например, добавьте тег вокруг номера телефона, который наш php-скрипт нашел)

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

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

Таким образом, я остаюсь с вытаскиванием страницы cURL, а затем пытается сопоставить файлы javascript, css файлы и т.д., Которые имеют относительные URL-адреса

Кто-нибудь знает, как лучше всего это достичь - и любые подводные камни, которые могут постигнуть меня.

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

Если кто-то справился с этим раньше и мог указать мне на инструменты/общие методы, которые они использовали, я был бы бесконечно благодарен!

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ - я очень хорошо разбираюсь в google и переполнении стека и посмотрел туда первым!

  • 1
    Конечно, вы не будете интересоваться CSS или JS, просто регулярные выражения для телефонных номеров? file_get_contents должно быть достаточно для получения разметки?
  • 0
    Извините я исправлю вопрос для ясности

1 ответ

0
Лучший ответ

Идеальное решение для HTML

Самый простой способ обойти относительные пути для произвольного сайта - использовать базовый тег href для указания относительного местоположения по умолчанию (просто используйте url до имени файла, например <base href="http://www.example.com/path/to/"/> для URL http://www.example.com/path/to/page. Это должно быть в верхней части блока заголовка.

Затем вы можете изменить сайт, просто найдя относительные части и обернув их в свой собственный тег, например, span. Для форматирования этих тегов самым простым способом было бы добавить атрибут style, но вы также можете попробовать вставить <style> в <head>.

Разумеется, вам также придется учитывать плохо сделанные веб-страницы без тегов <html>, <head> или <body>. Вы можете либо обернуть исходный код в новый набор этих тегов, либо просто поместить в базу и теги стиля, надеясь, что браузер будет работать над тем, что делать.

Возможно, вы также захотите сделать это интерактивным, так что вы должны также обернуть их какой-то ссылкой, и в идеале вы вставляете некоторые javascript для обработки своих действий с помощью ajax. Вы также должны вставить свой собственный заголовок в верхней части страницы, вероятно, плавающий сверху, чтобы они знали, что они используют ваш инструмент. Просто имейте в виду, что некоторые продвинутые страницы могут вступать в конфликт с вашими изменениями (хотя для этих случаев у вас может быть ссылка, говорящая "эта страница не отображается правильно?", Чтобы перейти на исходную страницу основного списка в качестве резервной копии).

Более надежное решение

Очевидно, что существует много потенциальных проблем с вышеизложенным, хотя это и идеально. Если вы хотите обеспечить надежность и избежать проблем с пользовательскими javascript и css на странице, которую вы пытаетесь изменить, вместо этого вы можете использовать аналогичный алгоритм для использования в текстовых браузерах, таких как lynx, для последовательного переформатирования страницы. Затем вы можете применить свой алгоритм, чтобы выделить соответствующие части страницы, и вы также можете применить свое собственное форматирование, не рискуя отображать его правильно. Таким образом, вы можете эффективно его создать и поддерживать свой интерфейс.

Проблема заключается в том, что вы теряете фактический внешний вид исходной страницы, но вы должны держать контекст вокруг чисел и адресов, что является важной вещью. Затем вы сможете использовать некоторый динамический javascript, чтобы каждый раз вводить пользователя и каждый адрес, чтобы улучшить работу пользователя. В принципе, это строго и дает вам полный контроль над пользовательским интерфейсом, но вы теряете оригинальный внешний вид веб-сайта, который может или не может путать ваших пользователей.


Лично я бы пошел на второй вариант, но я не уверен, что кто-то создал такой парсер раньше. Если нет, самое простое, что вы могли бы сделать, это разделить теги, чтобы получить его как обычный текст. Следующим простейшим было бы преобразовать его в какой-то простой формат разметки текста, такой как markdown, а затем преобразовать его обратно в html. Таким образом, вы сохранили бы базовый макет, такой как заголовки, курсивом и жирным шрифтом, и т.д.

Вы определенно не хотите иметь вложенные теги тела. Это может сработать, но это, вероятно, испортит ваше форматирование и будет непоследовательным в браузерах.


Вот ресурс, который я нашел после быстрого поиска Google:

https://github.com/nickcernis/html-to-markdown

Есть и другие html-скрипты для разметки, но это было более надежным из нескольких найденных мной. Я все еще не уверен, может ли он работать с плохо отформатированными страницами или с расширенным форматированием, попробуйте сами.

Есть довольно много уценок для html-конвертеров, хотя на самом деле вы, вероятно, могли бы сделать собственный конвертер самостоятельно достаточно легко, чтобы удовлетворить ваши личные потребности.

  • 0
    Спасибо за ответ - очень тщательный - если никто не ответит лучшим ответом, я отмечу его как принятый - я изучил базовый раздел href - но с этим возникают многочисленные проблемы. Я буду исследовать вариант уценки - не думал об этом!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню