收集淘宝店铺资料的小程序

Ruby学习持续进行中

看到业务人员不停的在Ctrl+c与Ctrl+v,还是把固定格式的淘宝搜索结果加入到excel表格中。

还好每人分了几个类目,不过也够浪费体力的了。

我虽然很懒,但也忍不住了,直接叫停,写了点 "日本码" 解决此懒。

ps: 每次打 'rb' ,输入法总出现 '日本' ,不知道是不是ruby故意的,正好拼音 r b。

 

#parseHTML.rb

#endode:utf-8
# 2010.6.13 @ spring by Apanda
# ver= 1.0 r
=begin

程序用途:

	解析淘宝搜索店铺的结果数据并储存为 csv文件
	一次可以截取多个搜索结果地址
	
本工具使用方法:

	1.建立一个list.txt的文件,里面存放淘宝搜索结果页面的地址 如下是商城食品类目搜索结果页:
		http://shopsearch.taobao.com/browse/shop_search.htm?cat=50002766&title=title&nick=nick&filterShopType1=1&s=40&stat=4
		http://shopsearch.taobao.com/browse/shop_search.htm?cat=50002766&title=title&nick=nick&filterShopType1=1&s=40&stat=4
	  将地址每行一个的方式保存好。
	  
	2.将该程序文件parseHTML.rb 和list.txt保存在同一个文件夹中,运行 ruby parseHTML.rb ,在同一文件夹下出现 taobao.csv文件
	
	技巧:按类目分别建立不同的文件夹,这样后续可以从新获取最新的搜索结果。
		taobao
			| - 食品
			| 	  | - list.txt
			|	  | - parseHTML.rb
			|
			| - 服装
			| 	  | - list.txt
			|	  | - parseHTML.rb
			....

=end








require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'iconv'
require 'fastercsv'

def write(data,name)
	FasterCSV.open(name, "w") do |csv|
		data.each{|line|
			csv << line
			#["row", "of", "CSV", "data"]
		}
	end
end	

def conv(str)
	Iconv.iconv("GBK//IGNORE", "UTF-8//IGNORE", str.to_s)
end

def parse(doc)
	shops= Array.new
	doc.css('table#item-matched tbody tr').each do |tr|
				#店铺名称
		shopName=conv tr.css('td.thumb div a')[0]['title']
		#店铺地址
		shopUrl=tr.css('td.thumb div a')[0]['href'].strip
		#主营产品
		desc=conv tr.css('td.thumb dl dd p')[0].css('a').text.collect{|line| line.strip}

		#消费者服务 baozhang
		service=[]
		tr.css('td.thumb dl dd p ins').each do |sevr|
			service << conv(sevr['title'])
		end
		baozhang=service.join(',')
		#宝贝数量
		total = tr.css('p.amount span')[0].content.strip
		#旺旺名称
		wangwang=conv tr.css('p.nick a')[0].content.strip
		#是否商城
		mall=tr.css('ins.service-mall').length > 0 ? "商城" : "个人"
		#地区
		diqu =conv tr.css('td')[3].css('p')[0].content.strip 

		#店铺级别
		level=tr.css('td')[4].css('p')[0]
		if level.css('a').length > 0
				level = conv level.css('a')[0]['title']
			else
				level = conv level.content.strip
		end
		#puts "店铺:#{shopName}\n地区:#{diqu}\n店铺等级:#{mall}/#{level}\n主营:#{desc}\n地址:#{shopUrl}\n宝贝数量:#{total}\n消费者服务:#{baozhang}\n旺旺名称:#{wangwang}\n"
		#puts "----------------------------------------"
		
		shops << [shopName,diqu,wangwang,mall,level,desc,shopUrl,total,baozhang]
	end
	
	shops
	
end

db = Array.new

File.readlines("list.txt").each do |row|
	url=conv(row).to_s
	puts url
	doc = Nokogiri::HTML(open(url))
	db.concat(parse(doc))
end
write(db,"taobao.csv")
puts db.length

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值