Intro
创建此eBay and Walmart dropshipping product research demo app的主要思想是展示使用Serpapi的众多选项之一的实际示例。
可以改进此应用程序,成为一种实际的掉落工具(例如,类似于ZikAnalytics)来研究产品,以及比较eBay和Walmart上某些产品价格以计算利润和其他可能的标准的能力。 p>
后端用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
,您可能会看到第一个屏幕:
如何使用?
首先,您需要输入带有产品名称的搜索查询,选择要出售产品的位置和名称匹配准确性(默认值更多或等于50%),然后单击“搜索”按钮。
ð注意:因为搜索时,使用Levenshtein distance比较产品名称,所以搜索查询必须与产品的全名相似,否则搜索将不会返回匹配项。
然后,您需要选择您感兴趣的产品,然后单击“比较结果”按钮:
并选择具有合适利润的产品,并以“ XLSX”格式保存:
如何工作?
因为前端作业只是为了向您展示信息,所以工作的主要部分在后端。因此,我将尝试向您解释它的工作原理。
我将跳过使用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 API和Ebay Search Engine Results API从SerpApi获得商店的有机结果:
//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”文件中:
限制和改进的事物
限制:
- 您需要尽可能准确地指定产品名称;
- 您需要自己选择适当的搜索结果;
- 目前仅支持两个市场;
- 能够仅以
xslx
格式保存结果。
要改进的事情:
- 连接更多的市场;
- 创建一个PDF模板以使保存的结果看起来更漂亮,更可读;
- 使用AI进行结果匹配而不是
levenshtein
。可能还可以通过图像匹配。
链接
- Walmart Search Engine Results API;
- Ebay Search Engine Results API;
- Project frontend repository;
- Project backend repository;
- 后端托管在Vercel; 上
- 前端托管在Netlify; 上
如果您希望将其他功能添加到此演示项目中,或者您想查看其他一些由Serpapi制造的项目,write me a message。
添加一个Feature Requestð«或Bugð