【干货】又快又准的筛选阿里国际站关键词的思路-python运营提效-(第一期)

使用代理池可以提高速度到3-4s一个关键词,使用方法见另一篇文章https://blog.csdn.net/weixin_43297217/article/details/106739455

分享一个我写的国际站批量查询关键词类目的小脚本,花了几个晚上空闲时间写了一下,感觉运行速度并不是很快,但是够用了,以及我其中遇到的一些问题。

前面也尝试过用selenium来模拟点击,但是太慢了,桌面还弹一堆乱七八糟的窗口,电脑都没法儿用。

实现功能:把收集的关键词放入一个文档里,输出最后判断的正确类目。(还有很多优化空间,大概完成了基本思路)

思路:我们国际站运营会经常收集大量关键词,筛选能用的词语比较麻烦。这个脚本能很快选出哪些关键词是我们想要的,剔除掉类目错误的关键,留下正确的关键词来优化。

我们怎么判断一个关键词类目对不对? 首先你把这个词拿到国际站主页去搜索,第一页除掉推广的词以后,剩下的自然排名前十的产品,每个产品去看它的类目,出现次数最多的类目就是正确类目。这不是为了查类目而去查类目,是为了能够更好的筛选掉关键词,只要类目不对的关键词直接干掉,后面数据处理的量会小很多。

如果人工去做这么一套操作,不仅繁琐还慢,于是我就想到用python的request去,查询关键词,获取首页自然流量前10的产品链接,再去遍历链接,用xpath获取类目的值,最后将这些类目值放入一个列表,然后找出列表里面出现最多的元素,这样就是这个关键词的正确类目了,如果这个类目和你运营产品的类目不匹配,直接可以删掉不用看了。

正常人怎么查类目

在这里插入图片描述
这个方法,很多情况下都会出现几个类目,也要人工手动去分辨,如果把【car】用到了玩具车的关键词里面,结果可想而知。

关键词都是为了排名,自然排名前面几个出现的类目,我们可以称作正确类目,产品挤上第一页概率会大很多。这也是阿里巴巴想告诉你的,一般搜这个词的人想找什么。

好的类目怎么查

先去主页搜索这个词
在这里插入图片描述

右下角没有AD的就是自然排名的产品,每个挨着挨着点进去,
在这里插入图片描述
这个红色框里面的就是产品类目。
就这样挨着看5-10个,出现最多的说明这个关键词主要是对应哪个类目了。
就是过程繁琐了点。

接下来我们就是要让整个过程实现自动化,并把选好的类目,直接输出保存为excel文件。

其中遇到了哪些问题

1.访问页面过快国际站会给你弹出验证码。
解决:
(1.白天尽量不要用,改time.sleep(5)多等待点时间,或者关掉多进程。
(2.构建ip代理池,提高速度不弹验证。

		#如果出现了需要验证,等待一段时间再重试,换cookies好像没用

2.不标准网页解析会报错,比如某些关键词下面一个产品都没有,或者产品少于15个(5个p4p产品,10个自然排名产品)。
解决:用try except,if else 解决报错,情况就那么几种。
3.多进程时间没控制好极易出验证码,建议每个关键词时间控制在10秒左右,这个脚本开多进程查一个单词能最快2-3秒,不换ip挺不30个关键词就会弹验证。

代码思路说明

1.读取存放关键词的文档,生产一个列表words。
2.遍历列表,然后访问国际站搜索结果面,提取前10个产品的链接,将链接储存到列表url_list 当中。
3.遍历url_list 把每个产品的类目提取到一个列表。
4.计算提取列表出现次数最多的类目。
5.保存关键词和类目到excel表。

确定好代码的整体思路

def get_words()
#得到关键词列表

def get_urls()
#得到一个关键词搜索结果页面的产品链接,储存为列表

def get_leimu()
#得到每个产品链接下面的类目值,储存为类目列表

def get_result()
#通过运算得出列表中类目出现次数最多的类目,确定为类目值

def save_file()
#保存结果到csv文件

def run()

if __name__ == '__main__':
	run()

开始码代码

要用到的库

import requests
from lxml import etree
import time
import csv
from multiprocessing import Pool

获取关键词,转换为列表格式

def get_words():
    with open('key', 'r', encoding='utf-8') as f:
        words = []
        for word in f.readlines():
            word = (word.strip())
            words.append(word)
        #words = words[13:]#如果你想从第14个关键词开始查询,就可以启用这行函数。程序运行到一般崩了,就不用从头再查
        num = len(words)
        print('一共有%s个单词,需要查询'%num)
    return words,num

“key”就是文档名,也可以是“XXX.txt”。

获取产品链接列表

def get_urls(word):
    url_base = "https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText="#国际站首页
    url = url_base + word#关键词搜索结果页链接
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
        'cookie': '你自己的cookies'

    }
    res = requests.session().get(url=url, headers=headers)
    html = etree.HTML(res.text)
    if '验证' in res.text:
        print('页面出现验证码,需要验证!')#运行过快会出现验证码
    p_list = html.xpath("//div[@class ='organic-list app-organic-search__list']")[0]#页面里面的产品
    url_list = []
    for p in p_list:
        p_url = p.xpath("./div//h4/a/@href")
        if len(p_url) == 0:
            pass
        else:
            p_url = p_url[0][2:]#链接前面有//两个斜杠,去除掉
            url_list.append(p_url)

    return url_list

获取每个产品详情页面的类目

def get_leimu(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
        'cookie': '你自己的cookies'

    }
    time.sleep(3)#减慢爬取速度
    res = requests.session().get(url,headers =headers)
    try:
        html2 = etree.HTML(res.text)
        leimu = html2.xpath("//ol/li[last()]//span[@itemprop='name']/text()")
        #如果你想爬产品标题,这里可以加代码
        leimu = leimu[0].strip()#清理掉空格等字符
        return leimu
    except:#如果报错基本就是,这个关键词下面一个产品都没有,通常是违禁词或者无效词
        leimu = []
        return leimu#返回单个类目值

得到最终结果

def get_result(leimu_list):#这个参数在run里面完成
    try:
        result = max(leimu_list, key=leimu_list.count)#网上看的,直接返回列表中出现次数最多的类目
        print('这个关键词的正确类目【%s】'%result)
        return result
    except:
        result = '无法识别!'
        return result

保存到CSV文件

def save_file(line,file_path):
    print(line)
    csvfile = open('%s.csv' % file_path, 'a+',newline="")#newline参数很关键,不然结果每行会出现空行
    writer = csv.writer(csvfile, dialect='excel')
    writer.writerow(line)

主程序

def run(word,num,a):
    file_path = '123'#保存的文件名,输出文件为123.csv
    time_start = time.time()#开始时间,为了计算每个关键词耗时
    print('开始查询%s的类目!---------%s/%s'%(word,a,num))#显示查询进度
    url_list = get_urls(word)#获取每个关键词下面的产品链接列表
    print(word)
    leimu_list = []
    for url in url_list:#循环查询每个产品的类目
        url = "http://"+url
        leimu= get_leimu(url)
        leimu_list.append(leimu)
    print(leimu_list)
    result = get_result(leimu_list)#得到最终类目
    line = [word,result]#保存进csv的数据
    save_file(line,file_path)
    print('保存成功!')
    time_end = time.time()#结束时间
    time_total = time_end - time_start#每个单词一共耗时
    print('查询花费时间%.2f'%time_total)
    print('*'*40)
    return None

单进程

if __name__ == '__main__':
    words, num = get_words()#获取关键词列表和关键词总数
    a = 1
    for word in words:
    	run(word,num,a)
    	time.sleep(1)
    	a = a + 1

多进程

if __name__ == '__main__':
    words, num = get_words()#获取关键词列表和关键词总数
    po = Pool(4)#4进程
    a = 1#正在查询第几个关键词
    for word in words:
        try:
            po.apply_async(run,args =(word,num,a))
            time.sleep(2)#降低速度
            a = a + 1
        except:
            print('多进程报错!')
    po.close()
    po.join()

注意事项:

因为页面是动态加载,不划的话最多爬首页9个产品的类目(算上p4p),要解决可以用selenuim库,就是慢。

有时间我还会把【用senlenuim 去国际站后台批量查询自然排名】的脚本放上来,虽然慢一点,2-4秒一个关键词,但是安全绝不弹验证码。

调试代码的时候换成单线程

更新日期

2020-06-13 IP代理池提高速度,https://blog.csdn.net/weixin_43297217/article/details/106739455

演示效果

> 多进程挂了的效果

快属实是快,挺不过30个词就弹验证,这种情况需要等一段时间就能恢复,重新运行,也可以尝试换ip。后面就是琢磨弄个ip代理池来运行,看能不能突破限制。

一共有49个单词,需要查询
开始查询car accessory的类目!---------1/49
开始查询car charger的类目!---------2/49
开始查询car phone holder的类目!---------3/49
开始查询car parts的类目!---------4/49
产品有:8个
car parts
产品有:8个
car accessory
产品有:8个
car charger
产品有:8个
car phone holder
['Other Interior Accessories', 'Other Interior Accessories', 'Auto Lighting System', 'Auto Lighting System', 'Auto Lighting System', 'Other Interior Accessories', 'Other Interior Accessories', 'Other Interior Accessories']
【Other Interior Accessories】
['car accessory', 'Other Interior Accessories']
保存成功!
查询花费时间7.83
****************************************
开始查询usb car charger的类目!---------5/49
['Other Auto Parts', 'Machining', 'Machining', 'Other Auto Parts', 'Other Auto Parts', 'Machining', 'Other Auto Parts', 'Other Auto Parts']
【Other Auto Parts】
['car parts', 'Other Auto Parts']
保存成功!
查询花费时间8.06
****************************************
开始查询wireless car charger的类目!---------6/49
['Charger', 'Charger', 'Car Charger', 'Charger', 'Car Charger', 'Charger', 'Charger', 'Charger']
【Charger】
['car charger', 'Charger']
保存成功!
查询花费时间8.46
****************************************
开始查询car air freshener的类目!---------7/49
['Mobile Phone Holders', 'Mobile Phone Holders', 'Car Holder', 'Car Holder', 'Mobile Phone Holders', 'Mobile Phone Holders', 'Mobile Phone Holders', 'Mobile Phone Holders']
【Mobile Phone Holders】
['car phone holder', 'Mobile Phone Holders']
保存成功!
查询花费时间8.47
****************************************
开始查询dual usb car charger的类目!---------8/49
产品有:8个
usb car charger
产品有:8个
wireless car charger
产品有:8个
dual usb car charger
产品有:8个
car air freshener
['Charger', 'Charger', 'Charger', 'Charger', 'Charger', 'Charger', 'Charger', 'Charger']
【Charger】
['usb car charger', 'Charger']
保存成功!
查询花费时间7.36
****************************************
开始查询car wireless charger的类目!---------9/49
['Car Freshener', 'Car Freshener', 'Car Freshener', 'Air Fresheners', 'Car Freshener', 'Car Freshener', 'Car Freshener', 'Car Freshener']
【Car Freshener】
['car air freshener', 'Car Freshener']
保存成功!
查询花费时间7.38
****************************************
开始查询car的类目!---------10/49
['Charger', 'Charger', 'Charger', 'Charger', 'Car Charger', 'Charger', 'Charger', 'Charger']
【Charger】
['wireless car charger', 'Charger']
保存成功!
查询花费时间7.98
****************************************
开始查询car seat cushion的类目!---------11/49
产品有:8个
car wireless charger
['Charger', 'Charger', 'Car Charger', 'Charger', 'Car Charger', 'Car Charger', 'Charger', 'Charger']
【Charger】
['dual usb car charger', 'Charger']
保存成功!
查询花费时间8.06
****************************************
开始查询electric car的类目!---------12/49
产品有:8个
car seat cushion
产品有:8个
car
产品有:8个
electric car
['Charger', 'Charger', 'Charger', 'Charger', 'Charger', 'Charger', 'Charger', 'Charger']
【Charger】
['car wireless charger', 'Charger']
保存成功!
查询花费时间7.03
****************************************
开始查询electrical car的类目!---------13/49
产品有:8个
electrical car
['Seat Cushions', 'Seat Cushions', 'Baby Cushions', 'Seat Cushions', 'Cushion', 'Cushion', 'Cushion', 'Cushion']
【Cushion】
['car seat cushion', 'Cushion']
保存成功!
查询花费时间7.21
****************************************
开始查询car seat cover的类目!---------14/49
[[], 'Used Cars', 'New Cars', [], 'New Cars', [], [], 'New Cars'][]['car', []]
保存成功!
查询花费时间7.60
****************************************
开始查询car battery charger的类目!---------15/49
[[], 'New Cars', [], 'Used Cars', 'New Cars', [], 'New Cars', []][]['electric car', []]
保存成功!
查询花费时间7.14
****************************************
开始查询car sticker的类目!---------16/49
产品有:8个
car seat cover
产品有:8个
car sticker
产品有:8个
car battery charger
[[], [], [], 'Used Cars', 'New Cars', [], 'New Cars', []][]['electrical car', []]
保存成功!
查询花费时间6.69
****************************************
开始查询car spare parts的类目!---------17/49
产品有:8个
car spare parts
['Charger', 'Charger', 'Car Charger', 'Car Charger', 'Car Charger', 'Car Charger', 'Charger', 'Charger']
【Charger】
['car battery charger', 'Charger']
保存成功!
查询花费时间7.45
****************************************
开始查询car air purifier的类目!---------18/49
['Car Stickers', 'Car Stickers', 'Car Stickers', 'Car Stickers', 'Car Stickers', 'Car Stickers', 'Car Stickers', 'Car Stickers']
【Car Stickers】
['car sticker', 'Car Stickers']
保存成功!
查询花费时间7.22
****************************************
开始查询toys car的类目!---------19/49
['Seat Covers', 'Seat Covers', 'Seat Covers', 'Seat Covers', 'Seat Covers', 'Seat Covers', 'Seat Covers', 'Seat Covers']
【Seat Covers】
['car seat cover', 'Seat Covers']
保存成功!
查询花费时间7.98
****************************************
开始查询toy car的类目!---------20/49
产品有:8个
car air purifier
产品有:8个
toys car
产品有:8个
toy car
['Other Auto Parts', 'Drive Shafts', 'Drive Shafts', 'Other Auto Parts', 'Other Auto Parts', 'Other Auto Parts', 'Other Auto Parts', 'Other Auto Parts']
【Other Auto Parts】
['car spare parts', 'Other Auto Parts']
保存成功!
查询花费时间6.85
****************************************
开始查询car mobile phone holder的类目!---------21/49
产品有:8个
car mobile phone holder
['Radio Control Toys', 'Radio Control Toys', 'Radio Control Toys', 'Radio Control Toys', 'Radio Control Toys', 'Ride On Car', 'Ride On Car', 'Ride On Car']
【Radio Control Toys】
['toy car', 'Radio Control Toys']
保存成功!
查询花费时间6.58
****************************************
开始查询car keychains的类目!---------22/49
['Radio Control Toys', 'Radio Control Toys', 'Radio Control Toys', 'Radio Control Toys', 'Radio Control Toys', 'Ride On Car', 'Ride On Car', 'Ride On Car']
【Radio Control Toys】
['toys car', 'Radio Control Toys']
保存成功!
查询花费时间7.09
****************************************
开始查询car holder的类目!---------23/49
['Air Purifiers', 'Air Purifiers', 'Air Purifiers', 'Air Purifiers', 'Air Purifiers', 'Air Purifiers', 'Air Purifiers', 'Air Purifiers']
【Air Purifiers】
['car air purifier', 'Air Purifiers']
保存成功!
查询花费时间7.38
****************************************
开始查询car usb charger的类目!---------24/49
产品有:8个
car keychains
产品有:8个
car holder
产品有:8个
car usb charger
['Mobile Phone Holders', 'Charger', 'Charger', 'Car Holder', 'Charger', 'Mobile Phone Holders', 'Mobile Phone Holders', 'Mobile Phone Holders']
【Mobile Phone Holders】
['car mobile phone holder', 'Mobile Phone Holders']
保存成功!
查询花费时间7.12
****************************************
开始查询car vacuum cleaner的类目!---------25/49
产品有:8个
car vacuum cleaner
['Key Chains', 'Key Chains', 'Key Chains', 'Key Chains', 'Key Chains', 'Key Chains', 'Key Chains', 'Key Chains']
【Key Chains】
['car keychains', 'Key Chains']
保存成功!
查询花费时间7.00
****************************************
开始查询magnetic car phone holder的类目!---------26/49
['Car Charger', 'Charger', 'Car Charger', 'Car Charger', 'Charger', 'Car Charger', 'Charger', 'Charger']
【Car Charger】
['car usb charger', 'Car Charger']
保存成功!
查询花费时间6.60
****************************************
开始查询car toy的类目!---------27/49
需要验证!
开始查询car cover的类目!---------28/49
需要验证!
开始查询auto spare parts car的类目!---------29/49
['Mobile Phone Holders', 'Car Holder', 'Car Holder', 'Car Holder', 'Mobile Phone Holders', 'Mobile Phone Holders', [], []]
【Mobile Phone Holders】
['car holder', 'Mobile Phone Holders']
保存成功!
查询花费时间7.20
****************************************
开始查询car lighting的类目!---------30/49
需要验证!
开始查询car light的类目!---------31/49
需要验证!
开始查询universal car charger的类目!---------32/49
需要验证!
开始查询car key chain的类目!---------33/49
需要验证!
开始查询remote control car的类目!---------34/49
需要验证!
开始查询remote controlled car的类目!---------35/49
需要验证!
开始查询car humidifier的类目!---------36/49
需要验证!
开始查询car phone charger的类目!---------37/49
需要验证!
开始查询car washer的类目!---------38/49
需要验证!
开始查询car repair tools的类目!---------39/49
需要验证!
开始查询car mat的类目!---------40/49
需要验证!
开始查询car repair tool的类目!---------41/49
需要验证!
开始查询cnc machining car parts的类目!---------42/49
需要验证!
开始查询car led light的类目!---------43/49
需要验证!
开始查询car led lighting的类目!---------44/49
需要验证!
开始查询led car light的类目!---------45/49
需要验证!
开始查询ride on car的类目!---------46/49
需要验证!
开始查询fast car charger的类目!---------47/49
需要验证!
开始查询car neck pillow的类目!---------48/49
需要验证!
开始查询qc3.0 car charger的类目!---------49/49
需要验证!
需要验证!
需要验证!

> 单线程效果

看起来规规矩矩,但是也不安全,查100多个词左右会弹验证码。

一共有49个单词,需要查询
开始查询car accessory的类目!---------1/49
产品有:8个
car accessory
['Other Interior Accessories', 'Other Interior Accessories', 'Auto Lighting System', 'Auto Lighting System', 'Auto Lighting System', 'Other Interior Accessories', 'Other Interior Accessories', 'Other Interior Accessories']
筛选后的类目是【Other Interior Accessories】
['car accessory', 'Other Interior Accessories']
保存成功!
查询花费时间7.91
****************************************
开始查询car charger的类目!---------2/49
产品有:8个
car charger
['Charger', 'Charger', 'Car Charger', 'Charger', 'Car Charger', 'Charger', 'Charger', 'Charger']
筛选后的类目是【Charger】
['car charger', 'Charger']
保存成功!
查询花费时间7.64
****************************************
开始查询car phone holder的类目!---------3/49
产品有:8个
car phone holder
['Mobile Phone Holders', 'Mobile Phone Holders', 'Car Holder', 'Car Holder', 'Mobile Phone Holders', 'Mobile Phone Holders', 'Mobile Phone Holders', 'Mobile Phone Holders']
筛选后的类目是【Mobile Phone Holders】
['car phone holder', 'Mobile Phone Holders']
保存成功!
查询花费时间7.92
****************************************
开始查询car parts的类目!---------4/49
产品有:8个
car parts
['Other Auto Parts', 'Machining', 'Machining', 'Other Auto Parts', 'Other Auto Parts', 'Machining', 'Other Auto Parts', 'Other Auto Parts']
筛选后的类目是【Other Auto Parts】
['car parts', 'Other Auto Parts']
保存成功!
查询花费时间7.29
****************************************

Excel 输出效果

有些产品没有类目,输出为 [ ],在excel里面筛选类目就能简单的把无效关键词剔除掉。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DM。

对您有帮助的话,打赏一下吧~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值