WP выдрать посты - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64397.8568
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 17.11.2011, 04:05   #1
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953648
По умолчанию WP выдрать посты

Может кто писал аналогичную функцию. Как без лишнего мусора выдрать чисто текст последних 10 постов с главной страницы ? (учитывая, что фид отдаёт только обрезанный вариант)
__________________
sspy вне форума  
Старый 17.11.2011, 04:20   #2
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

в теории и при худшем раскладе нужны:
1) сайт-кравлер с правилами сбора ссылок на посты
2) xpath-парсер

при лучшем:
1) for($pageid=1; $pageid<1000; $pageid++)
2) regexp-парсер
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 17.11.2011, 04:24   #3
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953648
ТС -->
автор темы ТС По умолчанию

где начало поста можно понять по куску текста из фида, а вот конец походу придется искать перебором списка тегов
__________________
sspy вне форума  
Старый 17.11.2011, 04:43   #4
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
где начало поста можно понять по куску текста из фида, а вот конец походу придется искать перебором списка тегов
да нее, там один родительский тег будет, что-то типа: <div class="entry-content">
на xpath'е это будет примерно так:
Код:
/html/body/div/div/div/div/article/div
или даже так:
Код:
//div[@class="entry-content"]
только предварительно надо причесать html, например, с помощью tidy

ну кто-то регекспами мучается, но там тоже не особо сложно, если знаешь название класса дива и теги, рядом с которым он закрывается - там комменты, они тоже имею свои идентификаторы. Но если на сайте сильный анти-парс, то придется писать парсер по типу того, что в моем соседнем топике )
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 17.11.2011, 09:50   #5
den2099
Senior Member
 
Аватар для den2099
 
Регистрация: 25.06.2011
Сообщений: 1,804
Бабло: $371785
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
да нее, там один родительский тег будет, что-то типа: <div class="entry-content">
на xpath'е это будет примерно так:
Код:
/html/body/div/div/div/div/article/div
или даже так:
Код:
//div[@class="entry-content"]
не, там проблема в том, что в каждом шаблоне у WP свои теги, каждый лепит во что горазд, поэтому под каждый блог приходится парсер заново настраивать. он правильно сказал, что для начала поста лучше всего отталкиваться от первого предложение из RSS, только надо еще учитывать, что некоторые плагины формируют мета-теги (keywords и desc например) тоже исходя из первых нескольких слов поста.
den2099 вне форума  
Старый 17.11.2011, 10:48   #6
business-net
Особый статус
 
Регистрация: 19.02.2009
Сообщений: 117
Бабло: $34435
По умолчанию

удали все теги которые для разметки текста . вырежи мусор .
собери содержимое оставшихся тегов в массив . выбери самый крупный кусок текста . % на 98 это и есть статья . название из тайтла или h1 возьми. остальное подпили в процессе использования.
__________________
Мой блог
business-net вне форума  
Старый 17.11.2011, 11:15   #7
1een
Senior Member
 
Аватар для 1een
 
Регистрация: 28.05.2009
Сообщений: 1,321
Бабло: $164090
По умолчанию

Offtopic
1een вне форума  
Старый 17.11.2011, 12:03   #8
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от den2099 Посмотреть сообщение
не, там проблема в том, что в каждом шаблоне у WP свои теги, каждый лепит во что горазд, поэтому под каждый блог приходится парсер заново настраивать. он правильно сказал, что для начала поста лучше всего отталкиваться от первого предложение из RSS, только надо еще учитывать, что некоторые плагины формируют мета-теги (keywords и desc например) тоже исходя из первых нескольких слов поста.
это решаемо, т.к. текстовый процессор вп все равно придерживается структуры и можно будет сделать по типу:

//div[*[contains(text(), 'текст из rss')]]
ну несколько шаблончиков забацать, пусть пусть перебирает.

More
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 17.11.2011, 12:07   #9
den2099
Senior Member
 
Аватар для den2099
 
Регистрация: 25.06.2011
Сообщений: 1,804
Бабло: $371785
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
это решаемо, т.к. текстовый процессор вп все равно придерживается структуры и можно будет сделать по типу:
//div[*[contains(text(), 'текст из rss')]]
ну несколько шаблончиков забацать, пусть пусть перебирает.
а если шаб не на дивах?
den2099 вне форума  
Старый 17.11.2011, 12:43   #10
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от den2099 Посмотреть сообщение
а если шаб не на дивах?
их меньше, в основном все на дивах.
я не пытаюсь доказать, что можно и очень просто создать универсальный парсер, который будет парсить любой вордпресс, или по любому сайту определять, что это вордпресс и тд. Это уже задачи из разряда распознавания образов. но к примеру выдернуть нужный текст, которого сосредоточено много в одном месте - вполне решаемая задача даже на произвольном сайте
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума