收集淘宝店铺资料的小程序
时间:2010-07-14 来源:mewleo
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
相关阅读 更多 +
排行榜 更多 +