Обработка и проверка пользовательских URL в django
Я создаю веб-сайт, где пользователи публикуют контент и URL-адреса, очень похожие на фейсбук-стену / новостную ленту.
Я думал, что могу взять URL-адрес от пользователя и открыть его с сервера в бэкэнде django и изучить его содержимое (как это делает Facebook).
Я подумал, что должно быть приложение django-opengraph, которое поможет мне открыть URL-адрес и проверить метатеги, чтобы определить, какой контент и т. Д. Но кажется, что Open Graph - это изобретение Facebook?
Мой вопрос заключается в том, как я могу открыть URL-адрес с помощью django и получить контент (видео, аудио, изображения, тексты) и определить, какой тип контента я могу правильно добавить на мой сайт? Какие-нибудь приложения?
Кроме того, я заинтересован в аспекте безопасности открытых URL-адресов с сервера, отправленного пользователем.
Спасибо!
5 ответов
Вы можете запросить URL с модулем urllib2. Но я предлагаю использовать BeutifulSoup для проверки содержания URL. http://pypi.python.org/pypi/BeautifulSoup.
djangoembed больше не поддерживается. Но вы можете взглянуть на Микобер. Кажется, хорошо подходит для вашего запроса.
Протокол Open Graph действительно был изобретен Facebook и представляет собой набор метаданных, которые вы можете добавить для подробного описания содержимого страницы: 9GAG будет описывать изображение, которое показывается; YouTube описал бы видео и т. Д. Большинство страниц, которые предоставляют возможность делиться контентом на Facebook, являются OGP-дружественными, но они по-прежнему не охватывают весь контент, доступный в Интернете.
В любом случае, будьте очень осторожны, если вы идете по пути, чтобы ваше приложение само получало и разрешало контент из URL-адресов, как предлагали другие. Я бы предпочел разработать приложение JavaScript, которое будет использовать ресурсы клиента для разрешения самого контента, поскольку есть много способов, которыми кто-то может предоставить вам вредоносные URL-адреса, которые намеренно исчерпают доступные ресурсы вашего приложения, если вы не будете осторожны, не говоря уже о том, что сам процесс очень дорог для начала.
Чтобы расширить существующие ответы: загрузите страницу с помощью запросов, а затем обработайте ее с Beautifulsoup4.
пример
import requests
from bs4 import BeautifulSoup
r = requests.get('http://www.facebook.com')
soup = BeautifulSoup(r.text)
print soup.title.string
Который вернется
Welcome to Facebook - Log In, Sign Up or Learn More
См. Документацию Beautifulsoup о том, как извлечь другие элементы из HTML.
Там нет простого ответа на это. Используя только запросы или urllib2, вы можете сделать некоторые предположения о структуре и захватить заголовок или угадать, какой контент может иметь новостная статья / видео. Вместо того, чтобы изобретать велосипед, есть два решения, которые, как я знаю, помогут вам взяться за дело.
- Embed.ly, который является платным сервисом и имеет очень хороший API.
- Джангоэмбед. Бесплатное решение с использованием протокола oEmbed. Хотя я этим не пользовался, похоже, именно то, что вам нужно.