有位会员向我反馈到:“仔细看了您博客上的跨境电商批量采集系列教程,收获很大,现在也开始试着做一些采集分析工作了。但感觉还是太复杂了,很伤脑筋,有没有更简便的方法么?”
我想说:“有,肯定是有的,只是简便的方法可能让你更伤脑筋。”
一般来说,采集产品数据可以通过第三方ERP平台、专业的采集软件以及独立编程等方式实现。很多ERP平台都提供了标准的采集功能,比如店小秘,卖家可以直接在线采集各大跨境电商平台上的产品;第二种是我之前介绍的类似火车采集器这种采集软件,可以自由定制采集规则,效果要远高于ERP平台的采集功能;而第三种则是自己独立编程方式来进行采集,这也是目前效果最佳,能力最强的采集方式了。当然,绝大部分卖家并没有网络编程基础,所以,我在之前的博客中也尽量分享一些通俗易懂的内容,极少分享独立编程方面的内容。
今天就做个简单的Python编程采集演示,请放心,这次的演示也同样是通俗易懂的,也让所有读者都可以试着自己动手采集体验一下。我们先找个比较容易采集的平台进行示范,那么,这次就用lazada来演示。
采集演示:
第一步:打开lazada的马来西亚站点,网址输入 https://www.lazada.com.my/
在Categories分类中,随便选择一个类目,进去这个品类的产品列表页面;
第二步:在产品列表页面分析出产品数据存储方式与地址信息;
这里要用Chrome浏览器,按”F12″,打开调试模式;鼠标点击XHR选项卡,然后,我们进行翻页测试,并观察XHR选项卡内容变化;这时候,你会发现,每翻一页,就会出现一个?abbucket=&a开头的链接,我们将这个链接完整复制一下,粘贴到记事本看看,内容如下:
https://www.lazada.com.my/portable-speakers-for-tv/?abbucket=&abtest=&acm=icms-zebra-5000097-2585699.1003.1.2262485&clickTrackInfo=e3da73a4-cca6-4f23-b0a0-da6c4d91d077__8497__132833676__u2i&from=hp_categories&item_id=132833676&page=4&pos=1&scm=1007.17253.98102.0&spm=a2o4k.home.categories.1.b4f824f6XOvwja&up_id=132833676&version=v2
仔细分析后,你会发现,每翻一页,只有page= 后面的数字变化了,那么,我们就将一长串地址信息清理下,最后得到这个链接:
https://www.lazada.com.my/portable-speakers-for-tv/?ajax=true&page=4&version=v2
将这个地址输入浏览器地址栏上,打开后你会发现,一大对编码。如果你有一些编程经验,很容易理解这是什么内容。是的,这就是这个列表页面上的完整就json数据包。
第三步:找出json数据包规律。将这些代码完整复制粘贴到www.json.cn上,然后一个一个点开节点,分析下,找到产品信息存储在哪个节点。一番查找后,你会发现,这个页面一共有40个产品,在mods节点下的listItems节点下。
第四步:到这里,我们就要开始编写python程序采集这些产品数据了。在采集之前,还得解决下python的运行环境问题。当然,全新安装有些繁琐,我们找个最简单的办法,直接使用在线的网页版python编程工具-jupyter notebook来完成程序编写与采集工作;
直接打开jupyter notebook,点击 这个链接 https://mybinder.org/v2/gh/ipython/ipython-in-depth/master?filepath=binder/Index.ipynb
第五步:编写Python采集程序;
在Jupyter Notebook中输入以下代码,然后执行。程序即会自动将这个页面上的所有产品采集下来,并且保存为csv格式;
[cc lang=”python”] import requests
import json
import pandas
res = requests.get(“https://www.lazada.com.my/portable-speakers-for-tv/?ajax=true&page=7&version=v2”)
data = json.loads(res.text)
jsdata = (data[“mods”][“listItems”])
pandas.DataFrame(jsdata).to_csv(“lazada.csv”)[/cc]
简单讲下这段代码的意思:
这里用到了几个第三方包:requests、json、pandas
requests负责抓取https://www.lazada.com.my/portable-speakers-for-tv/?ajax=true&page=7&version=v2 这个地址的数据,赋值给res;
json.loads加载res.text 赋值给data;
然后从data找到一级节点[“mods”]和二级节点[“listItems”]获得产品完整数据信息,赋值给jsdata;
利用pandas.DataFrame将jsdata命名为lazada.csv并存储为csv格式;
第六步:将采集到的文件下载到本地;
到这里,你所采集到的产品数据就保存在了本地电脑上了。
当然,这只是个最简单的演示,这些数据并不能直接拿来使用,距离直接使用还有很多的分析与处理工作要做。大家也可以摸索着改进下这个程序。好了,不能讲太多,有些费脑子,不懂也没关系,看看就行。
如果你是会员,别担心。有空的话,我会完善好这个采集程序,将翻页采集、内容清理等工作做完。如果你有兴趣的话,可以到会员区复制这段代码,参考我的做法,修修改改,改成适合自己使用的一个采集小工具。当然,你也可以举一反三,在其他平台上试着用同样的方式去编写程序。
思考总会让人进步。那么,我们也可以再思考一下。各个平台的api授权反馈数据好像也是json数据包格式,看过今天的教程,我想您大概也能理解那些第三方ERP系统的处理订单和批量上传产品的工作原理了。