我在深圳的一家跨境电商公司中从事Aliexpress项目经理时,曾苦于站内流量的匮乏,而培养爆款是需要相对长期的运营同时需要公司多方的协助。在这种情况下便想方设法可以从站内搜索中获得更多的流量,便有了这个站内SEO的辅助工具,最早的版本是一个python脚本,现在我用scrapy实现了就先把它记录下来,早期的脚本后面同样会记录上来。
大体思路是这样的:Aliexpress在抓取产品信息后悔根据产品与关键词的相关性以及过往的销售情况,好评情况等指标为产品在其站内的搜索结果进行排序。而关键词占到比较大的比重。可以看到:
客户在搜索每个关键词时页面会返回这个关键词下的产品数量,而Aliexpress会定期提供最近一个月所热搜的关键词表。就由此有了思路:把所要操作的目录下的所有关键词依次在前台搜索,并将结果返回到Excel表中,搜索人气高而相对结果数较少的关键词,就是我们需要优先使用的,从而达到关键词筛选和优化的目的。
实现过程
1. 将所有待查的关键词从Excel表中读出,并整理成Aliexpress正式的URL,存在本地txt文件中。且看代码:
# -*- coding: utf-8 -*- from openpyxl import load_workbook import sys reload(sys) sys.setdefaultencoding("utf-8") def sortxlsx(): # sort all key words from xlsx file into a list in memory sortedlist=[] keywords_list=load_workbook('e://key.xlsx') sheetnames=keywords_list.get_sheet_names() ws=keywords_list.get_sheet_by_name(sheetnames[0]) for rx in range(ws.get_highest_row()-1): sortedlist.append(ws.cell(row=rx+2, column=2).value) return sortedlist def sorturl(sortedlist): # sort each key word into formal Aliexpress URL baseurl='http://www.aliexpress.com/wholesale?SearchText=' urllist=[] for word in sortedlist: if ' ' in word: word=word.replace(' ','+') urllist.append(baseurl+word) return urllist if __name__ == '__main__': sortedlist=sortxlsx() urllist=sorturl(sortedlist) with open('E://urllist.txt','w') as file: for eachurl in urllist: file.write(eachurl+'\n') print 'save to urllist.txt file'
由于每一次查询都是独立的,就是说从前一个页面中得不到需要查询的下一个关键词的URL,所以在使用Scrapy之前有这样的一个操作。
2. Scrapy查询
首先定义items:
# -*- coding: utf-8 -*- # Define here the models for your scraped items from scrapy.item import Item, Field class SortaliexpresskeywordsItem(Item): search_count = Field() keyword=Field()
items我们定义了搜索结果和搜索的关键词。
再定义Spider:
# -*- coding: utf-8 -*- import scrapy from SortAliexpressKeywords.items import SortaliexpresskeywordsItem from openpyxl import load_workbook class BasicSpider(scrapy.Spider): name = "Keywordspider" allowed_domains = ["aliexpress.com"] start_urls=[i.decode('utf-8').strip() for i in open('E://urllist.txt').readlines()] def parse(self, response): item=SortaliexpresskeywordsItem() item['search_count']=response.xpath('//strong[@class="search-count"]/text()').extract() item['keyword']=response.xpath('//input[@class="search-key"]/@value').extract() return item
爬去所有已经存在txt文件中的URL并提取出关键词和结果返回。
3. 将查询结果写回原来的Excel文件
# -*- coding: utf-8 -*- from openpyxl import load_workbook def sortxlsx(): # sort the result key words with number into a dict in memory sorteddict=dict() keywords_list=load_workbook('E://result.xlsx') sheetnames=keywords_list.get_sheet_names() ws=keywords_list.get_sheet_by_name(sheetnames[0]) for rx in range(ws.get_highest_row()-1): sorteddict[ws.cell(row=rx+2, column=2).value]=ws.cell(row=rx+2, column=1).value print 'result.xlsx already sorted into dict.' return sorteddict def matchkeywords(sorteddict): # match each key word and save to a new xlsx file keywords_list=load_workbook('E://key.xlsx') sheetnames=keywords_list.get_sheet_names() ws=keywords_list.get_sheet_by_name(sheetnames[0]) for rx in range(ws.get_highest_row()-1): if ws.cell(row=rx+2, column=2).value in sorteddict: ws.cell(row=rx+2, column=11).value=sorteddict[ws.cell(row=rx+2, column=2).value] else: ws.cell(row=rx+2, column=11).value='null' keywords_list.save('final.xlsx') print 'result already save into final.xlsx.' if __name__ == '__main__': sorteddict=sortxlsx() matchkeywords(sorteddict)
然后再根据Excel提供的排序功能,筛选出符合要求的关键词。这个工具使我一度在电子商务工作中极为有底气,显著提高了销量。