Magento 批量刷入 Amazon上的产品评论

网站上线前都需要弄点“假数据”让网站好看点,一般公司都是从AMAZON的店铺上把热销的产品review放到网站上,无奈AMAZON防爬虫的功夫一流(主要是我懒得再写爬虫有现成的为什么不用?),magento好像也没有这样的插件,当然你的老板愿意手动复制粘贴就另当别论了,反正这个世界傻子总是不缺的。下面我们来BB一下怎么抓取然后导入到magento。

提前申明我不是给某软件来打广告的

准备工作 

1、高速翻墙软件(如果你不介意慢的话可以不开)

2、下载安装后羿采集器(自行百度)

开始抓取

1.打开要采集的amazon产品页面,拖动滚动条到review,点击“See all 4,571 reviews”跳转到评论详情页,并复制浏览器上的地址;

2.打开采集器在输入框内粘贴地址,点击“智能采集”;(若你电脑上装有360可能会弹出警告,勾选不再提醒,允许即可)

然后滚动采集器的滚动条会自动滚到页面底部,最好不要切换屏幕干别的,目的是让采集器识别网页内容,识别完成后采集器下方会出现能采集到的数据:

3.设置采集范围,很显然我们不需要采集所有数据,若这个产品评论有几千条我们只需要采集1-5页即可不要太多,点击“设置采集范围”

4.过滤采集内容,

采集到的内容有很多是我们不需要的,在标题栏上右键“删除字段”删除不需要的数据

不需要的数据有“标题链接、头像、a-color-tertiarya-link-normala-color-seconddary1

网站需要的字段有 标题,a-icon-alt, a-color-seconddary,a-section,review-text

5.补充缺少的字段 ,在采集结果里面我们找不到用户上传的图片,点击“添加字段”,把页面滚动到有图片的review上,将鼠标移动到评论图片上点一下即可识别这个字段(注意:图片字段采集器无法拿到大图拿到的是缩略图,所以不是很推荐加这个字段,大图可以手动点开下载,或者不要图也行

6.产品的sku或id字段 ,这个字段amazon上是没有的,要导入到magento我们必须根据sku或产品ID来,所以要手动添加一个,

点击“添加字段”并将这个字段拖到最前面,在字段标题上右键“数据处理”

在步骤详情里面填这个产品的sku

 

结果如下:

7.提取评分,我们只需要提取客户打的分数,当前的“5.0 out of 5 stars”显然不合要求,在a-icon-alt上右键选择“数据处理” 

在弹出框内点“新建”选“正则提取”并在“步骤详情”内填入正则表达式如图,点确定即可

8.字段排序,我是按照:评论标题-评论内容-评分-用户名-时间-图片 的顺序排列因为一会还要用程序读取,鼠标按左键住要排序的标题栏左右拖动 

9.过滤掉不合格的评论,我们不希望把评分太低的评论或带视频的评论抓取,点击“数据筛选”

10.开始采集数据,等待任务完成,点“导出数据”按钮,保存地址选你熟悉的文件夹点“导出”;

11.编写解析程序(我的字段可能跟你不一样不要无脑照搬)

<?php
/**
*Author: YafullyZhao
*Date: 20190812
*Discription: Write Amazon Review csv Data to mysql
*Email: yafully@gmail.com
*/
require_once 'app/Mage.php';
Mage::app();
 
$_read = Mage::getSingleton('core/resource')->getConnection('core_read');
$_write = Mage::getSingleton('core/resource')->getConnection('core_write');


$customerId = '1';//用户ID 
// Remove existing ratings 清除老数据
$clearOldData = false;
if($clearOldData){
  $_write->query("SET FOREIGN_KEY_CHECKS = 0;");
  $_write->query("TRUNCATE TABLE rating_option_vote;");
  $_write->query("TRUNCATE TABLE review_detail;");
  $_write->query("TRUNCATE TABLE review_entity_summary;");
  $_write->query("TRUNCATE TABLE review_store;");
  $_write->query("TRUNCATE TABLE review;");
  $_write->query("TRUNCATE TABLE rating_option_vote_aggregated;");
  $_write->query("SET FOREIGN_KEY_CHECKS = 1;");
}

//echo '<p>Bulk Add Reviews</p>';
$cvsDatas = Mage::helper('Function')->getCsvData(Mage::getBaseDir('media').'/data/reviews-data.csv');

$i = 0;
$total = count($cvsDatas);
//echo '<p>Total'.$total.'</p>';
//while( $csv_line = fgetcsv($file_handle) ){
//0 SKU,1 Title,2 Detail,3 Vote,4 Nick Name,5 Creat Date,6 Pics,7 Videos
foreach ($cvsDatas as $csv_line) {
  if( !is_array($csv_line) ) {
    break;
  }

  $sku = trim($csv_line[0]);//产品SKU
  
  $review_name = ucwords( strtolower( trim( $csv_line[1] ) ) );
  
  $details = trim( $csv_line[2] );
  $rating_value = (int)$csv_line[3];
  if( empty( $rating_value ) ){
    continue;
  }

  // Create a single name
  $nickname = ucwords( strtolower( trim( $csv_line[4] ) ) );

 
  //$email = strtolower( trim( $csv_line[7] ) );
  if( !$created = strtotime( trim($csv_line[5]) ) ){
    $created = time();  
  }else{
    $created = strtotime(trim($csv_line[5]));
  }

  $piclist = empty($csv_line[6]) ? null : $csv_line[6];
  $videolist = empty($csv_line[7]) ? null : $csv_line[7];
  
 
  $approval_status = 1;

 
  $_product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);
 
  if(!$_product) {
    print '<p>Unmatched SKU: ' . $sku . '</p>';
    continue;
  }
 
  // Add the review
  $_review = Mage::getModel('review/review')
    ->setEntityPkValue($_product->getId())
    ->setStatusId($approval_status)
    ->setTitle($review_name)
    ->setDetail($details)
    ->setPiclist($piclist)
    ->setVideolist($videolist)
    ->setEntityId(1)
    ->setStoreId(1)//店铺
    ->setStores(array(1,0))
    ->setCustomerId($customerId)

    ->setNickname($nickname)
    ->save();
  //echo '<p>save!</p>';  
  // Set the created date
  $_write->query("UPDATE review SET created_at = '" . date('Y-m-d H:m:s', $created) .  "' WHERE review_id = " . $_review->getId());
  $_review->aggregate();
   
  // Map your rating_id to your option_id with an array or something
  $rating_options = array(
      3 => array(11,12,13,14,15),
  );
 
  // Now save the ratings
  foreach($rating_options as $rating_id => $option_ids){
    try {
      $_rating = Mage::getModel('rating/rating')
      ->setRatingId($rating_id)
      ->setReviewId($_review->getId())
      ->setCustomerId($customerId)
      ->addOptionVote( $option_ids[$rating_value-1],$_product->getId() );
    } catch (Exception $e) {
      print_r($e);
      die($e->getMessage());
    }
  }

  //if($i+1>$total) echo '<p>Done!</p>';
  $i++;
  print '<p>Write: ' . $i . '</p>';
}

运行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值