产品比较应用程序(JS演示项目)
#react #node #serpapi #dropshipping

Intro

创建此eBay and Walmart dropshipping product research demo app的主要思想是展示使用Serpapi的众多选项之一的实际示例。

可以改进此应用程序,成为一种实际的掉落工具(例如,类似于ZikAnalytics)来研究产品,以及比较eBay和Walmart上某些产品价格以计算利润和其他可能的标准的能力。

后端用node.js编写,react中的前端。要创建此应用程序,我使用的是下一个NPM软件包:

如何在本地运行?

ð注意:如果您不想在本地运行该应用程序,则可以跳过此部分。

您可以将应用程序文件下载到您的计算机并在本地运行:

Run Backend

要运行后端,您需要在后端目录中创建.env文件并在其中写下您的api_key:

API_KEY="paste here your api key from https://serpapi.com/manage-api-key"

然后运行终端并输入(您需要安装node.js):

*如果您没有安装node.js,则可以download it from nodejs.org并遵循安装documentation

npm i

,然后:

npm start

现在您的服务器正在工作。要检查它,请访问浏览器中的http://localhost:4004。如果您看到“无法获得 /一切都可以。< /p>

run frontend

让我们开始我们的前端。首先,您需要更改后端URL。要执行此开放src/requests.js并将baseURL更改为http://localhost:4004。现在,您的应用程序将向您的本地后端发送请求。

接下来,在前端目录中运行终端并输入:

npm i

,然后:

npm start

应用程序启动后,您可以在浏览器中转到http://localhost:3000,您可能会看到第一个屏幕:

image

如何使用?

首先,您需要输入带有产品名称的搜索查询,选择要出售产品的位置和名称匹配准确性(默认值更多或等于50%),然后单击“搜索”按钮。

ð注意:因为搜索时,使用Levenshtein distance比较产品名称,所以搜索查询必须与产品的全名相似,否则搜索将不会返回匹配项。

image

然后,您需要选择您感兴趣的产品,然后单击“比较结果”按钮:

image

并选择具有合适利润的产品,并以“ XLSX”格式保存:

image

如何工作?

因为前端作业只是为了向您展示信息,所以工作的主要部分在后端。因此,我将尝试向您解释它的工作原理。

我将跳过使用express创建服务器的部分,并专注于分析和处理结果的部分。如果您不知道该怎么做,here's a Hello world koude7 example from official docs

首先,当服务器在Route "/store"上接收请求时,它使用getResultsToChoose函数处理:

//index.js
app.post("/store", getResultsToChoose);

在此功能中,我们会根据targetStore进行删除结果,将其过滤并在响应中将其发送回前端:

//storeResultsHandler.js
export const getResultsToChoose = async (req, res) => {
  const { targetStore, query, accuracy } = req.body;
  let results;
  if (targetStore === "ebay") {
    const ebayResults = await getStoreResults(targetStore, query);
    results = ebayFiltering(query, accuracy, ebayResults);
  } else {
    const walmartResults = await getStoreResults(targetStore, query);
    results = walmartFiltering(query, accuracy, walmartResults);
  }
  res.status(200).json({ filteredResults: results });
};

getStoreResults用于使用Walmart Search Engine Results APIEbay Search Engine Results APISerpApi获得商店的有机结果:

//serpApiHandler.js
import dotenv from "dotenv";
import { config, getJson } from "serpapi";

dotenv.config();
config.api_key = process.env.API_KEY; // your SerpApi private key from .env file

// make params to make a request to SerpApi depending on target store
const getParams = (store, query) => {
  switch (store) {
    case "ebay":
      return {
        _nkw: query,
      };
    case "walmart":
      return {
        query,
      };
    default:
      break;
  }
};

// get JSON with results and return organic_results array
const getStoreResults = async (store, query) => {
  const params = getParams(store, query);
  const results = await getJson(store, params);
  return results.organic_results;
};

export default getStoreResults;

在获得有机结果(例如从eBay那里)后,我们只剩下购买现在购买价格,处于新状态的产品,并与LevenShtain距离方法匹配我们的搜索查询。最终按价格上升顺序排序:

//storeResultsHandler.js
const ebayFiltering = (query, accuracy, results) => {
  return results
    ?.filter((result) => {
      const { title, condition, price } = result;
      const extractedPrice = price?.extracted;
      if (100 - levenshtein(query, title) >= accuracy && condition === "Brand New" && extractedPrice) {
        return true;
      } else return false;
    })
    ?.sort((a, b) => {
      if (a.price.extracted > b.price.extracted) return 1;
      else return -1;
    });
};

收到结果后,用户选择了适合他的那些,然后再次将请求发送到Route "/comparison"

//index.js
app.post("/comparison", buildComparisonTable);

这次,我们的服务器,使用serpapi,在另一个站点上搜索和过滤产品(如果选择eBay作为目标站点,则在沃尔玛对搜索进行搜索),为用户选择的每种产品进行搜索):

//storeResultsHandler.js
export const buildComparisonTable = async (req, res) => {
  const { targetStore, selectedResults, accuracy } = req.body;
  let comparisonResults = [];
  for (const result of selectedResults) {
    const { title } = result;
    if (targetStore === "ebay") {
      const walmartResults = await getStoreResults("walmart", title);
      comparisonResults.push({ product: result, comparison: walmartFiltering(title, accuracy, walmartResults) });
    } else {
      const ebayResults = await getStoreResults("ebay", title);
      comparisonResults.push({ product: result, comparison: ebayFiltering(title, accuracy, ebayResults) });
    }
  }
  res.status(200).json({ comparisonResults });
};

最终结果将退还给用户,以选择具有最大好处的产品,并能够将所选产品保存在“ XLSX”文件中:

image

限制和改进的事物

限制:

  • 您需要尽可能准确地指定产品名称;
  • 您需要自己选择适当的搜索结果;
  • 目前仅支持两个市场;
  • 能够仅以xslx格式保存结果。

要改进的事情:

  • 连接更多的市场;
  • 创建一个PDF模板以使保存的结果看起来更漂亮,更可读;
  • 使用AI进行结果匹配而不是levenshtein。可能还可以通过图像匹配。

链接

如果您希望将其他功能添加到此演示项目中,或者您想查看其他一些由Serpapi制造的项目,write me a message


加入我们的Twitter | YouTube

添加一个Feature Requestð«或Bugð