Зачистка информации о продукте для сайта комиксов - PullRequest
1 голос
/ 17 марта 2012

Я делаю сайт комиксов, построенный на платформе WordPress для старого друга в его бизнесе. Я хотел бы иметь возможность иметь скрипт, который идет на различные сайты издателей и извлекает данные. Я новичок в программировании, я читал много разных альтернатив и просто не знаю, с чего начать. Во-первых, было бы законно вытаскивать этот контент с этих сайтов? Во-вторых, вот пример того, что я хотел бы сделать.

  1. Страница отображает то, что выходит за месяц. Скопируйте все ссылки с эта страница в соответствующем div, который ведет к комиксу подробности. Сохраните каждую гиперссылку как $ comiclink или как угодно. Сценарий будет выполнять каждую гиперссылку за раз.

  2. Перейдите по гиперссылке на $ comiclink и удалите содержимое со страницы. на то, что в некоторых DIV на этой странице. Пример:

    • Скопируйте и сохраните комический заголовок в определенном div в $ title
    • Скопируйте и сохраните гиперссылки на предыдущие и будущие заголовки в определенном div в $ othertitles

      Примечание: $ othertitles отключится и запустит тот же процесс сам с 1.

    • Сохранение и загрузка всех изображений в определенном div в $ images
    • Скопируйте и сохраните весь контент внутри определенного div в $ content. $ content затем разбивается и разделить на основе содержимого, которое в нем. Пример:

      • В магазинах: $ date
      • формат: $ формат
      • UPC: $ upc
      • Цена: $ цена
      • История: $ story
  3. Копирование и сохранение определенной гиперссылки div и сохранение в $ seriesinfo

  4. Скопируйте и сохраните определенный div $ relatedinfo, а затем разбейте его.

    • изображений в $ relatedinfo к $ relatedimages
    • содержимое в $ relatedinfo к $ relatedcontent
    • ссылки в $ relatedinfo на $ relatedlink. $ relatedlink отключится и перезапустит сам этот процесс с 1.

Теперь, когда все разбито на части и сохранено в свои маленькие кусочки. Я хочу, чтобы WordPress автоматически создал пост, а затем начал назначать всю эту информацию в пост. Работаю примерно так.

  1. Проверьте существующий пост с таким же $ title, если он не существует, поместите $ title в заголовок для post и page-name. Если он существует, прервите сценарий и переходите к следующему.
  2. Удалите цифры и буквенные символы из $ title и проверьте наличие категории, если она не существует; создать его и назначить для публикации. Если он существует, назначает категорию для сообщения.
  3. Проверить существующую категорию со значением $ format, если существует, назначить для публикации, если нет, создать и назначить категорию для публикации.
  4. загрузить изображения, которые были загружены из $ image в этот пост.
  5. Проверьте наличие изображений, которые содержат слово «обложка», и назначьте их избранными.

Кроме того, как все это тоже выполняется. Я не хочу, чтобы это работало 24/7 - просто раз в неделю я хотел бы, чтобы это выполнялось само по себе и автоматически переходило на соответствующие веб-сайты, очищало содержимое и создавало страницы.

Я не прошу вас, ребята, выписать всю эту чертову вещь для меня; хотя я определенно не буду возражать против этого! Просто помогите указать мне правильные направления, чтобы все началось. За прошедший день я прочитал около 30+ статей по извлечению контента, и из того, что я могу сказать, есть так много вариантов, что я просто не знаю, с чего начать и как заставить шар двигаться в правильном направлении с этим.

Обновленный код

Примечания: Итак, мне удалось успешно скопировать содержимое и пути для каждого блока и вместо того, чтобы загружать изображения, просто отображая их с текущего местоположения. Следующим шагом является автоматизация процесса создания записи в WordPress, в которую будут выгружаться данные.

function scraping_comic()
{
// create HTML DOM
$html = file_get_html('http://page-on-site-to-scrape.com');

    // get block to scrape
    foreach($html->find('li.browse_result') as $article)
{
    // get title from block
    $item['title'] = trim($article->find('h4', 0)->find('span',0)->plaintext);
    // get title url from block
    $item['title_url'] = trim($article->find('h4', 0)->find('a.grid-hidden',0)->href);
    // get image from block
    $item['image_url'] = trim($article->find('img.main_thumb',0)->src);
    // get details from block
    $item['details'] = trim($article->find('p.browse_result_description_release', 0)->plaintext);
    // get sale info from block
    $item['on_sale'] = trim($article->find('.browse_comics_release_dates', 0)->plaintext);

$ret[] = $item;
}

// clean up memory
$html->clear();
unset($html);

return $ret;
}


// ===== The Code ====

$ret = scraping_comic();

if ( ! empty($ret))
{

// place main url for instance when hyperlinks and image srcs don't use the full path.
$scrape = 'http://site-to-scrape.com';

foreach($ret as $v)
{
    echo '<p><a href="'.$scrape.$v['title_url'].'">'.$v['title'].'</a></p>';
    echo '<p><img src="'.$v['image_url'].'"></p>';
    echo '<p>'.$v['details'].'</p>';
    echo '<p> '.$v['on_sale'].'</p>';
}

}
    else { echo 'Could not scrape page!'; }
?>

1 Ответ

1 голос
/ 17 марта 2012

Как правило, нет это не будет законным. Компании, которые делятся своими данными в эти дни, будут внедрять API, который вы можете вызывать и использовать в своем приложении (в соответствии с их Условиями использования и Политикой авторского права). Им не нравится, что вы делаете автоматические запросы, которые загромождают их сервер и убивают их пропускную способность.

Как говорится, часто информация о продукте доступна из других источников, таких как Amazon, у которых есть API.

В этом проекте, который вы описываете, нужно проделать большую работу по настройке WordPress CMS, и он будет менее чем тривиален для тех, у кого нет опыта программирования. Возможно, вы захотите нанять фрилансера на oDesk или на одну из многих других вакансий фрилансера.

...