spamboo
@spamboo
регулярки это не мое :(

Получить почту с js json как?

есть адрес страницы : https://ваннаякомната.su
в исходном коде есть :
<script type="application/ld+json">{"@context": "http://schema.org", "@type": "WebSite", "url": "https://xn--80aaaag4cofadj5cxk.su/", "potentialAction": {"@type": "SearchAction", "target": "https://xn--80aaaag4cofadj5cxk.su/site_search?search_term={search_term}", "query-input": "required name=search_term"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org", "@type": "Organization", "url": "https://xn--80aaaag4cofadj5cxk.su/", "name": "\u0422\u041a \"\u0412\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u0430\"", "email": "vannaja.komnata@yandex.ru", "contactPoint": [{"@type": "ContactPoint", "telephone": "+7 (383) 310-60-86", "areaServed": "RU", "contactType": "customer service"}, {"@type": "ContactPoint", "telephone": "+7 (383) 299-06-67", "areaServed": "RU", "contactType": "customer service", "description": "\u0448\u043e\u0443 \u0440\u0443\u043c \u0421\u0442\u0430\u043d\u0438\u0441\u043b\u0430\u0432\u0441\u043a\u043e\u0433\u043e, 29"}, {"@type": "ContactPoint", "telephone": "+7 (983) 510-60-86", "areaServed": "RU", "contactType": "customer service"}, {"@type": "ContactPoint", "contactType": "customer service", "url": "https://xn--80aaaag4cofadj5cxk.su/", "hoursAvailable": {"@type": "OpeningHoursSpecification", "opens": "10:00", "closes": "19:00", "dayOfWeek": ["http://schema.org/Monday", "http://schema.org/Tuesday", "http://schema.org/Wednesday", "http://schema.org/Thursday", "http://schema.org/Friday"]}}, {"@type": "ContactPoint", "contactType": "customer service", "url": "https://xn--80aaaag4cofadj5cxk.su/", "hoursAvailable": {"@type": "OpeningHoursSpecification", "opens": "10:00", "closes": "18:00", "dayOfWeek": ["http://schema.org/Saturday"]}}, {"@type": "ContactPoint", "contactType": "customer service", "url": "https://xn--80aaaag4cofadj5cxk.su/", "hoursAvailable": {"@type": "OpeningHoursSpecification", "opens": "10:00", "closes": "17:00", "dayOfWeek": ["http://schema.org/Sunday"]}}], "address": {"@type": "PostalAddress", "postalCode": "630129", "streetAddress": "1.\u0432\u044b\u0441\u0442\u0430\u0432\u043e\u0447\u043d\u044b\u0439 \u0437\u0430\u043b \u0438 \u0441\u043a\u043b\u0430\u0434 \u0443\u043b.\u0422\u0430\u0439\u0433\u0438\u043d\u0441\u043a\u0430\u044f, 11 \u043a\u043e\u0440\u043f\u0443\u0441 4 ; 2. \u0432\u044b\u0441\u0442\u0430\u0432\u043e\u0447\u043d\u044b\u0439 \u0437\u0430\u043b \u0443\u043b.\u0421\u0442\u0430\u043d\u0438\u0441\u043b\u0430\u0432\u0441\u043a\u043e\u0433\u043e, 29", "addressLocality": "\u041d\u043e\u0432\u043e\u0441\u0438\u0431\u0438\u0440\u0441\u043a", "addressRegion": "\u041d\u043e\u0432\u043e\u0441\u0438\u0431\u0438\u0440\u0441\u043a\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c", "addressCountry": {"@type": "Country", "name": "\u0420\u043e\u0441\u0441\u0438\u044f"}}}</script>


цель получить обработать данные отсюда а именно получить строчку vannaja.komnata@yandex.ru
подскажите как лучше это сделать ?
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
@DanKud
$html = file_get_contents('https://xn--80aaaag4cofadj5cxk.su/'); /* парсим код страницы */
preg_match_all('/<script type="application\/ld\+json">(.*?)<\/script>/is', $html, $result); /* регулярным выражением делаем выборку в массив содержимого тэгов script */
$json = json_decode($result[1][1], true); /* декодируем json строку второго вхождения в массив, где находится нужный е-мейл */
$email = $json['email'];
print_r($email);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08 Куратор тега PHP
  1. Получи содержимое тега script, это будет json строка.
  2. Декодируй эту строку и получишь php массив.
  3. Работай с этим массивом.
Ответ написан
Комментировать
Попробуй через консоль:
let emails = [];
$('script[type="application/ld+json"]').each(function(i,json){
json = JSON.parse($(this).text())
if(typeof json.email === 'string')
{
	emails.push(json.email)
}
})
console.log(emails);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы