Kompx.com or Compmiscellanea.com

Браузер lynx. Создание sitemap.xml

Операционные системы : Linux

Существует немало онлайн сервисов для создания sitemap.xml. Однако его можно сделать и самому на своем компьютере, используя браузер lynx и несколько утилит командной строки Linux. Далее описывается пример использующего их bash-скрипта, названного "sitemap.sh".

Bash-скрипт, который создает файл sitemap.xml:

#!/bin/bash

cd /home/me/sitemap/www/

lynx -crawl -traversal -accept_all_cookies -connect_timeout=30 http://www.compmiscellanea.com/ > /dev/null

cd /home/me/sitemap/www2/

lynx -crawl -traversal -accept_all_cookies -connect_timeout=30 http://compmiscellanea.com/ > /dev/null

cat /home/me/sitemap/www2/traverse.dat >> /home/me/sitemap/www/traverse.dat

cat /home/me/sitemap/www/traverse.dat | sed -e 's/\<www\>\.//g' | sort | uniq > /home/me/sitemap/sitemap/sitemap.xml

sed -i 's/\&/\&amp\;/g' /home/me/sitemap/sitemap/sitemap.xml

sed -i "s/'/\&apos\;/g" /home/me/sitemap/sitemap/sitemap.xml

sed -i 's/"/\&quot\;/g' /home/me/sitemap/sitemap/sitemap.xml

sed -i 's/>/\&gt\;/g' /home/me/sitemap/sitemap/sitemap.xml

sed -i 's/</\&lt\;/g' /home/me/sitemap/sitemap/sitemap.xml

sed -i 's/http:\/\//http:\/\/www\./g' /home/me/sitemap/sitemap/sitemap.xml

sed -i -e 's/^/<url><loc>/' /home/me/sitemap/sitemap/sitemap.xml

sed -i -e 's/$/<\/loc><\/url>/' /home/me/sitemap/sitemap/sitemap.xml

sed -i -e '1 i <?xml version="1\.0" encoding="UTF-8"?>\r\r<urlset xmlns="http:\/\/www\.sitemaps\.org\/schemas\/sitemap\/0\.9" xmlns:xsi="http:\/\/www\.w3\.org\/2001\/XMLSchema-instance" xsi:schemaLocation="http:\/\/www\.sitemaps\.org\/schemas\/sitemap\/0\.9 http:\/\/www\.sitemaps\.org\/schemas\/sitemap\/0\.9\/sitemap\.xsd">\r\r<!-- created by sitemap.sh from http:\/\/www.compmiscellanea.com\/en\/lynx-browser-creating-sitemap.xml\.htm -->\r\r' /home/me/sitemap/sitemap/sitemap.xml

sed -i -e '$ a \\r</urlset>' /home/me/sitemap/sitemap/sitemap.xml

sed -i '/static/d' /home/me/sitemap/sitemap/sitemap.xml

echo "...Done"

После того, как файл с bash-скриптом готов: "chmod +x sitemap.sh", что бы сделать его исполняемым.

Скачать sitemap.sh в архиве sitemap.sh.tar.gz ( После того, как архив загружен и распакован, в файле заменить http://www.compmiscellanea.com/ на нужное доменное имя сайта с "www" и заменить http://compmiscellanea.com/ на нужное доменное имя сайта без "www". Вместо "static" в последней строке файла поставить строку, которую должны содержать ссылки, что бы они были удалены из списка. Затем "chmod +x sitemap.sh". Затем запустить sitemap.sh ).

Комментарии

Скачать sitemap2.sh с построчными комментариями в архиве sitemap2.sh.tar.gz.

Перед тем, как запустить bash-скрипт, нужно создать три папки. Так как браузер lynx в каких-то случаях может пропустить некоторые ссылки, если доменное имя сайта будет указано с или без "www", то bash-скрипт запускает lynx дважды, обрабатывая сайт по доменному имени с "www" и обрабатывая сайт по доменному имени без "www".

Получающиеся два файла помещаются в две разные папки, здесь это "/home/me/sitemap/www/" и "/home/me/sitemap/www2/". А директория "/home/me/sitemap/sitemap/" предназначена для создаваемого sitemap.xml.


1. Путь к bash

#!/bin/bash

2. Переход в папку - браузер lynx поместит туда файлы, полученные при обработке сайта по доменному имени с "www"

cd /home/me/sitemap/www/

3. Запуск браузера lynx для обработки сайта. Поскольку lynx может пропустить некоторые ссылки, если доменное имя сайта будет указано с или без "www", bash-скрипт запускает lynx дважды, обрабатывая сайт и по доменному имени с "www", и по доменному имени без "www". В данной строке bash-скрипта - с "www". Lynx браузер автоматически пройдет по всем страницам и ссылкам на них. Все куки будут приниматься. С помощью "-connect_timeout" можно указать сколько времени в секундах lynx будет пытаться перейти по каждой ссылке

lynx -crawl -traversal -accept_all_cookies -connect_timeout=30 http://www.compmiscellanea.com/ > /dev/null

4. Переход в другую папку - браузер lynx поместит туда файлы, полученные при обработке сайта по доменному имени без "www"

cd /home/me/sitemap/www2/

5. Запуск браузера lynx для обработки сайта. Поскольку lynx может пропустить некоторые ссылки, если доменное имя сайта будет указано с или без "www", bash-скрипт запускает lynx дважды, обрабатывая сайт и по доменному имени с "www", и по доменному имени без "www". В данной строке bash-скрипта - без "www". Lynx автоматически пройдет по всем страницам и ссылкам на них. Все куки будут приниматься. С помощью "-connect_timeout" можно указать сколько времени в секундах lynx будет пытаться перейти по каждой ссылке

lynx -crawl -traversal -accept_all_cookies -connect_timeout=30 http://compmiscellanea.com/ > /dev/null

6. При запуске браузера lynx дважды, для обработки сайта и по доменному имени с "www", и по доменному имени без "www", создаются два файла с собранными ссылками. Здесь содержимое второго файла добавляется к концу первого

cat /home/me/sitemap/www2/traverse.dat >> /home/me/sitemap/www/traverse.dat

7. Ссылки, собранные lynx при обработке сайта по доменному имени без "www" не содержат "www.". Что бы сделать список ссылок единообразным, "www." у остальных ссылок тоже убираются. Затем они все сортируются по алфавиту с помощью sort. Затем uniq удаляет повторяющиеся записи. После чего результат сохраняется в файл "sitemap.xml", создаваемый в процессе

cat /home/me/sitemap/www/traverse.dat | sed -e 's/\<www\>\.//g' | sort | uniq > /home/me/sitemap/sitemap/sitemap.xml

8. Если в URL есть &, ', ", > и <, они заменяются на &amp;, &apos;, &quot;, &gt;, &lt;. Другие специальные и не-ASCII символы должны быть приведены в соответствие с действующими стандартами файла sitemap.xml [ 1 ] и общей практикой [ 2 ] разработчиками веб-сайта, страницы которого будут обрабатываться или CMS этого сайта. Иначе lynx будет пробовать понять эти URL согласно своим правилам и возможностям, пробовать их прочитать и записать в traverse.dat. В зависимости от среды, где lynx запущен, это иногда может быть более или менее успешно, а иногда более или менее нет.

& заменяется на &amp;

sed -i 's/\&/\&amp\;/g' /home/me/sitemap/sitemap/sitemap.xml

9. Замена ' на &apos;

sed -i "s/'/\&apos\;/g" /home/me/sitemap/sitemap/sitemap.xml

10. Замена " на &quot;

sed -i 's/"/\&quot\;/g' /home/me/sitemap/sitemap/sitemap.xml

11. Замена > на &gt;

sed -i 's/>/\&gt\;/g' /home/me/sitemap/sitemap/sitemap.xml

12. Замена < на &lt;

sed -i 's/</\&lt\;/g' /home/me/sitemap/sitemap/sitemap.xml

13. Ко всем ссылкам добавляется www.

sed -i 's/http:\/\//http:\/\/www\./g' /home/me/sitemap/sitemap/sitemap.xml

14. Перед каждой строкой добавляется <url><loc>

sed -i -e 's/^/<url><loc>/' /home/me/sitemap/sitemap/sitemap.xml

15. После каждой строки добавляется </url></loc>

sed -i -e 's/$/<\/loc><\/url>/' /home/me/sitemap/sitemap/sitemap.xml

16. Перед содержимым файла добавляются открывающие теги XML документа и комментарий

sed -i -e '1 i <?xml version="1\.0" encoding="UTF-8"?>\r\r<urlset xmlns="http:\/\/www\.sitemaps\.org\/schemas\/sitemap\/0\.9" xmlns:xsi="http:\/\/www\.w3\.org\/2001\/XMLSchema-instance" xsi:schemaLocation="http:\/\/www\.sitemaps\.org\/schemas\/sitemap\/0\.9 http:\/\/www\.sitemaps\.org\/schemas\/sitemap\/0\.9\/sitemap\.xsd">\r\r<!-- created by sitemap.sh from http:\/\/www.compmiscellanea.com\/en\/lynx-browser-creating-sitemap.xml\.htm -->\r\r' /home/me/sitemap/sitemap/sitemap.xml

17. После содержимого файла добавляется закрывающий тег XML документа

sed -i -e '$ a \\r</urlset>' /home/me/sitemap/sitemap/sitemap.xml

18. Удаление ненужных ссылок по содержанию в них указанной строки

sed -i '/static/d' /home/me/sitemap/sitemap/sitemap.xml

19. Сообщение, что процесс завершен

echo "...Done"


Документация браузера lynx по опциям "-traversal" и "-crawl": CRAWL.announce.


Aliosque subditos et thema

 

Распаковать tar.bz2

 

Распаковать tar.bz2 в командной строке Linux: tar jxvf file.tar.bz2 - j : пропустить архив через bzip2 [ 1 ] - x : извлечь файлы из архива - v : выводить список обрабатываемых файлов в процессе работы команды - f : распаковывать файл, имя которого указано после команды и модификаторов. То есть, параметр f предписывает использовать следующий аргумент как то, с чем надо работать вместо устройства архивации, указанного в системе по умолчанию, например /dev/rmt0. Команда извлекает содержимое сжатого архива в текущую папку. Tar создает архив из одного или нескольких файлов. Затем используется bzip2, чтобы его сжать. Или оба процесса производятся только с помощью tar, используя соответствующие параметры команды. Двойственность природы - упаковано в архив и затем сжато - отражается в расширении имени файла ("tar.bz2") и требует, чтобы в процессе извлечения были проведены две процедуры: восстановление из сжатого состояния и распаковка. Отсюда j (восстановить) и x (распаковать) в команде. [ 1 ] Источники для описания параметров команды: OpenNet : MAN tar и Сitforum : TAR(1)

JavaScript submit form

 

Обработка формы с помощью JavaScript. Выпадающий список (form + select + несколько option) обрабатывается без использования кнопки submit. Пример: --- Выбрать страницу --- Linux Windows DOS HTML / XHTML. Code: <form action="action.php" method="post"> <select name="page" required="required" onchange="this.form.submit()"> <option value="" selected="selected" disabled="disabled"> --- Выбрать страницу --- </option> <option value="http://www.kompx.com/ru/os/linux-1.htm">Linux</option> <option value="http://www.kompx.com/ru/os/windows-1.htm">Windows</option> <option value="http://www.kompx.com/ru/os/dos-1.htm">DOS</option> </select> <noscript><input type="submit" value="Submit" /></noscript> </form> Когда в выпадающем списке выбирается одна из опций, состояние формы изменяется. Так что происходит событие onchange и запускается JavaScript в onchange: процесс обработки формы и передачи данных инициируется скриптом, а не кликом на кнопку submit, которая отсутствует. Для работы с action формы назначается тот или иной скрипт [ 3 ], выполняемый на сервере. Скрипт принимает то, что отсылает форма и обрабатывает принятое. В данном примере используется PHP скрипт в action.php: <?php if (isset($_POST["page"])) {     header("Location: $_POST[page]");     exit; } else {     echo "Ничего не выбрано"; } $_POST представляет собой массив из переменных, передаваемых данному скрипту методом HTTP POST. Так что $_POST[page] содержит значение атрибута value в одном из option внутри select. То есть, URL. Он передается от формы к PHP скрипту, а скрипт перенаправляет браузер на выбранный URL / страницу. HTML код <noscript><input type="submit" value="Submit" /></noscript> присутствует в форме на случай, если JavaScript отключен. Тогда появится кнопка submit и форма все равно останется пригодной к использованию. [ 1 ] А так же в Netscape 3.04+, Mozilla 0.6+. [ 2 ] А так же в Netscape 3.04+, Mozilla 0.6+. [ 3 ] Если используется CMS, для работы с action формы может применяться один из ее собственных инструментов.