Advertisement
  1. Code
  2. PHP

Как парсить веб-страницы для метаданных

Scroll to top
Read Time: 3 mins
This post is part of a series called How to Scrape Web Pages for Metadata.
Using the New York Times API to Scrape Metadata

Russian (Pусский) translation by Anna k.Ivanova (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating
v

Введение

Недавно я начал создавать сайт сообщества поверх фреймворка Yii, о котором я писал в «Программирование с Yii2: создание сообщества с комментариями, общим доступом и голосованием» (Envato Tuts +). Я хотел упростить добавление ссылок, связанных с контентом на сайте. Людям легко вставлять URL-адреса в формы, но вот на предоставление информации о названии и источнике статьи приходится тратить время.

В сегодняшнем учебном пособии я расскажу вам, как использовать PHP для сбора общих метаданных с веб-страниц, чтобы ваши пользователи могли легче участвовать и создавать более интересные услуги.

Помните, что я участвую в комментариях ниже, так что скажите мне, что вы думаете! Вы также можете связаться со мной в Twitter @lookahead_io.

Начинаем

Во-первых, я создал форму для добавления ссылок, просто вставляя URL-адрес. Я также создал кнопку «Поиск», чтобы использовать AJAX для запроса веб-страницы для получения метаданных.

Web Scraping - Create Link form with Lookup buttonWeb Scraping - Create Link form with Lookup buttonWeb Scraping - Create Link form with Lookup button

Нажатие «Поиск» вызывает функцию Link::grab() через ajax:

Парсинг страницы

Код Link::grab() вызывает fetch_og(). Это имитирует скрапера для захвата страницы и получения метаданных с помощью DOMXPath:

В моем сценарии я заменил теги og: выше, но в приведенном ниже коде представлены различные типы тегов:

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

Web Scraping - Create Link with Resulting Title Filled InWeb Scraping - Create Link with Resulting Title Filled InWeb Scraping - Create Link with Resulting Title Filled In

Идем дальше

У меня также есть таблица источников. Но в основном, каждый раз, когда добавляется новый URL-адрес, мы анализируем его для домена базового сайта и помещаем его в таблицу Source:

Пока что я вручную обновляю имена источников, чтобы они выглядели чистыми для пользователя, например. ABC News, BoingBoing и Vice:

Web Scraping - Item page with completed links and clean sourcesWeb Scraping - Item page with completed links and clean sourcesWeb Scraping - Item page with completed links and clean sources

Надеюсь, в следующем эпизоде я рассмотрю, как использовать свободно доступные API для поиска имени сайта. Странно, что для этого нет общего метатэга; если бы только Интернет был совершенным.

Сайты Paywall

Некоторые сайты, такие как The New York Times, не позволяют вам собирать метаданные из-за их переходов. Но у них есть API. Нелегко разобраться из-за запутанной документации, но их разработчики быстро помогают на GitHub. Я также надеюсь написать об использовании поиска метаданных для названий New York Times в будущем эпизоде.

В заключение

Надеюсь, что для вас этот урок оказался полезным. Если вы хотите увидеть его в действии, вы можете попробовать некоторые из веб-скраперов на моем сайте, Active Together.

Пожалуйста, поделитесь своими мыслями и отзывами в комментариях. Вы также можете всегда связаться со мной в Twitter @lookahead_io. И обязательно ознакомьтесь с моей страницей преподавателя и другими моими сериями Пишем стартап на PHP и Программируем с Yii2.

Ссылки по теме

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.