刮痧漫画书网站的产品信息

时间:2012-03-17 06:02:25

标签: wordpress automation screen-scraping

我正在建立一个基于WordPress平台的漫画书网站,供老朋友使用。我希望能够有一个脚本可以访问各个发布者网站并提取数据。我是编程的新手,我读过很多不同的选择,只是不知道从哪里开始。首先,从这些网站提取这些内容是否合法?其次,这是我想做的一个例子。

  1. 页面显示本月即将发布的内容。复制所有链接 在导致漫画书的适当div中的那个页面 细节。将每个超链接保存为$ comiclink或其他。脚本会 一次执行每个超链接。

  2. 转到$ comiclink的超链接,并从页面中删除内容     在该页面上某些DIV中的内容。例如:

    • 复制&将已定义div中的漫画标题保存到$ title
    • 复制&将定义的div中的前一个和将来的标题超链接保存到$ othertitles

        

      注意:$ othertitles将循环关闭并从1开始执行相同的过程。

    •   
    • 保存&将定义的div中的所有图像下载到$ images
    •   
    • 复制&将定义的div中的所有内容保存到$ content。然后细分$ content   并根据其中的内容拉开。示例:

        
          
            
              
      • 在商店:$ date
      •       
      • 格式:$ format
      •       
      • UPC:$ upc
      •       
      • 价格:$ price
      •       
      • 故事:$ story
      •       
          
        
  3. 复制&保存已定义的div超链接并保存到$ seriesinfo

  4. 复制&保存已定义的div $ relatedinfo,然后将其分解。

    • $ relatedinfo中的图片到$ relatedimages
    • $ relatedinfo中的内容到$ relatedcontent
    • $ relatedinfo中的链接到$ relatedlink。 $ relatedlink将循环关闭并从1开始重启此过程。
  5. 现在所有东西都被分开并保存在它自己的小块中。我希望WordPress自动创建一个帖子,然后开始将所有这些信息分配到帖子中。像这样工作。

    1. 检查具有相同$ title的现有帖子(如果不存在)将帖子和页面名称的标题放在$ title中。如果它存在中止脚本并继续下一步。
    2. 从$ title中删除数字和字母字符,如果不存在则检查是否存在类别;创建它并分配到帖子。如果存在,则为帖子分配类别。
    3. 如果存在分配给帖子,则检查现有类别为$ format的类别,如果不是,则创建&指定要发布的类别。
    4. 将从$ image下载的图片上传到此帖子。
    5. 检查包含“封面”一词的图像并指定为精选图像。
    6. 此外,整个事情也是如何执行的。我不希望这个全天候运行 - 每周只运行一次我希望自己执行此操作并自动转到相关网站并抓取内容并创建页面。

      我不是要求你们为我写出完整的东西;虽然我绝对不会反对它!只是帮助我指出正确的方向来实现这一目标。在过去的一天里,我已经阅读了大约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 个答案:

答案 0 :(得分:1)

通常,这不合法。如今,共享数据的公司将实施您可以在您的应用程序中调用和使用的API(根据其使用条款和版权政策)。他们不喜欢你制作自动化的请求,这会阻碍他们的服务器并消耗他们的带宽。

话虽如此,产品信息通常可以从亚马逊等其他来源获得,确实拥有API。

您正在描述的这个项目有很多工作要做,基本上是自定义WordPress CMS,对于没有任何编程经验的人来说,这不会是微不足道的。您可能想考虑在oDesk或其他许多自由职业委员会中聘请自由职业者。