自分自身のための ものづくり / 自分自身のためのものづくりメモ

* 100万点のspam出品

#ヤフオク #YAH!
YAH! NG_IDの整理
http://baku.homeunix.net/WiKi/rnx/index.rb?1179662167.txt
にて取得した、IDと出品数のリストを、出品数の多い順にソートし、上位の総出品数を算出した。

結果

 1000点以上出品しているIDが 389 あり、それら総出品数は 716044 --- 71万点 であった。
 100点以上出品しているIDが 1361 あり、それらの総出品数は 1087596 --- 108万点 であった。




* YAH! NG_IDの整理

#ヤフオク #YAH!
 YAH!のNG_IDの整理を行った。
 これまでに登録した各IDの総出品数をAPIにより取得し、IDと組にして出力。消えているID、もう活動していないIDをリストから消去した。

http://baku.homeunix.net/program/yahX/list_ngid.tgz

$ ruby -Ku list_ngid.rb ng_ID.txt | tee ngid_listed.txt
$ ruby -n -a -e 'print "#{$F[0]}\n" if $F[1].to_i>0' < ngid_listed.txt  > ng_id_active.txt

$ sort -n -k 2 -n -r < ngid_listed.txt > ngid_listed_sorted.txt

 自分用のNG_IDは、最初のYAH!を作って以来引き継いでおり、総登録数が4946件だった。内、IDが残っているのが4391、1点以上出品があるのが2839だった。
 NG_IDとの照合はrubyのHashを使っていて、数が増えても照合時間はさほど増えない。…が、もう消えているIDは確実に無駄だし、活動していないのも無駄だろう。

* deny from 64.124.85.0/24

#Web
 再び、BecomeBotに検索履歴をかき回されたので、.htaccessにて排除することにした。
robots.txt BecomeBot締め出し
http://baku.homeunix.net/WiKi/rnx/index.rb?1138996756.txt
にてのけ者にしたはずなのだが、BecomeJPBotは別物というわけか。え゛ー。
 ちなみに、robots.txtは最初にちゃんと読んでる。

 20秒に一度のアクセスだったり、UAの項に載っている http://www.become.co.jp/site_owners.htmlは「お客様が指定されたページは見つかりませんでした。」だったり、かなり感じ悪い。
(ちなみに、正しくは、http://www.become.co.jp/site_owner.html だそうだ。その辺の食い違いも感じ悪いぞ)
 また、他の多くのクローラの挙動と違ってリファラを送る点で、RandomeNoteの敵。

↓はた迷惑なアクセスの記録
(ReadMore...)

* 公認spammerに埋め尽くされてるヤフオク

#ヤフオク
 「ストア」は何点出品しようが(制限内なら)手数料がかからないから、元を取ろうとうじゃうじゃ出品していて激しく邪魔だ。

http://baku.homeunix.net/program/yah2/yah.rb?search=&extract_spam=yes&extract_spam_scan_noimg=yes&url=http%3A%2F%2Flist.auctions.yahoo.co.jp%2Fjp%2F2084039542-category-leaf.html%3Fmode%3D2%26s1%3Dend
オークション / コンピュータ / パーツ / ケーブル、コネクタ / その他
OriginalPage : http://list.auctions.yahoo.co.jp/jp/2084039542-category-leaf.html?mode=2&s1=end

1 / 80 ( 1993 )
(中略)
30 : netshop_one
32 : nature_net_shop
36 : komugi18
80 : m_aica
85 : tokyo_wave777ac
139 : bitcafeosaka
189 : enzandenki
218 : hobbesshop
234 : different_2005jp

 以上で、計1043点。カテゴリの全出品の5割を占めている。

(YAHのバグでページをまたぐ品を計上しているため、少し誤差があるが、まぁ、誤差の範囲)

* Yahoo!オークションWebサービスで商品詳細のデータ取得が可能に!!

#ヤフオク #Web
キタ━━━━(゜∀゜)━━━━ッ!!
Yahoo!デベロッパーネットワーク - Yahoo!オークション - REST - 商品詳細
http://developer.yahoo.co.jp/auctions/rest/auctionitem/V1/auctionitem.html

* Yahoo!オークションWebサービスで検索ができるようになった

 これまではそれができないのがかなり痛かったのだが、これで通常のブラウザでのアクセスとほぼ同等の情報が得られるようになったな。
 残るは、アダルトカテゴリへの対応?

Yahoo!デベロッパーネットワーク - 検索
http://developer.yahoo.co.jp/auctions/rest/search/V1/search.html

#ヤフオク #YAH! #Web

* HTMLをXHTMLに変換してREXMLで処理

プログラム(抜粋)
h = Html2xhtml.new
h.read_array(readlines)

require "rexml/document"
y = REXML::Document.new(h.body.to_s)

y.elements["/html/body"].elements[6, 'table'].elements['tr/td'].elements.each('a') do |a|
    p a.attributes['href']
    print a.text.strip + "\n"
end
結果
"http://auctions.yahoo.co.jp/jp/0-category.html?"
オークション
"http://list3.auctions.yahoo.co.jp/jp/23336-category.html?"
コンピュータ
"http://list3.auctions.yahoo.co.jp/jp/2084039759-category.html?"
パーソナルコンピュータ
楽だ…めっちゃ楽だ…

#Web #ヤフオク

* カテゴリ情報のデータが時々変

 ヘッダは200OKを返してくるのに、中身が"1\r\n"だけだったり、<childCategory>内の<categoryName>だけが抜けてたりする。
 検査して変だったらもう一回データを読み直すか?

#Ruby #REXML #ヤフオク #YAH! #途中経過

* Yahoo!オークションWebサービスとRSSとを併用

 これまでは、役に立たないと思っていたヤフオクのRSSは結構使えるかもしれん。
 特に、Yahoo!オークションWebサービスのAPIでは検索できないけど、RSSの方なら検索結果が得られるのはありがたい。
http://search3.auctions.yahoo.co.jp/search_rss?p=mobilegear&auccat=23336&alocale=0jp&acc=jp

#Ruby #REXML #ヤフオク #YAH! #途中経過

* YAH!X試験中

 Yahoo!オークションWebサービスにより提供されるXMLデータを使うYahoo!AuctionHelperを作成中。

↓とりあえずの実験バージョン
http://baku.homeunix.net/program/yahX/yahX_test01.rb?category=2084045752&pic=true
categoryを書き換えれば他のカテゴリを見れる。
pic=trueで画像表示。それ以外で非表示。

 YAH!の特徴である各種NG機能は、とりあえず「NGキャラクタ」のみ実装。
 「次の25件」をいちいちクリックしなくてもいいので、現状でもとりあえずそこそこ役立つと思う。

 YAH! Ver.3としようかと思っていたけど、Yahoo!オークションWebサービスでは今のところキーワード検索ができないっぽいなどの理由で、Ver.Xとして別物としての扱い。

#Ruby #REXML #ヤフオク #YAH! #途中経過

* REXMLを使ってヤフオクのXMLデータを読む

 楽だ…。機械で読みやすいデータが提供されてるというのはこんなにもありがたい物だったとは。
 また、便利なREXMLに感謝。

#!ruby -Ku

require 'jcode'
require 'nkf'
require "rexml/document"

file = File.new( "y.xml" )
y = REXML::Document.new file

y.root.each_element('item') do |item|
  p item.elements['auctionID'].text
  p item.elements['title'].text
  item.each_element('seller') do |s_item|
    p s_item.elements['itemlist'].text
    p s_item.elements['rating'].text
  end
  p item.elements['url'].text
  p item.elements['img'].text
  p item.elements['price'].text
  p item.elements['bids'].text
  p item.elements['endtime'].text
end

Yahoo!デベロッパーネットワーク - オークションWebサービス
http://developer.yahoo.co.jp/auctions/

REXML - Home
http://www.germane-software.com/software/rexml/index.html

私家版REXML APIリファレンス
http://www.cozmixng.org/~kou/ruby/rexml/reference

REXML Tutorial - Home
http://www.germane-software.com/software/rexml/docs/tutorial.html

REXML であそぶ
http://www.namikilab.tuat.ac.jp/~sasada/prog/rexml.html


#Ruby #REXML #ヤフオク #YAH! #途中経過

* ヤフオクのウォッチリスト用フィルタ

 ウォッチリストから商品IDが消えたと思ったら、まったくもって邪魔な「ポイント」とやらが出現。
 うりうりとProxomitron用フィルタを作成した。改変すると言うよりは、必要な情報を抽出して再構築するフィルタ。

商品名のみ
http://openwatchlist2.auctions.yahoo.co.jp/jp/show/mystatus?select=watchlist&s1=end&watchclosed=0&myaucpic=false
商品名と画像
http://openwatchlist2.auctions.yahoo.co.jp/jp/show/mystatus?select=watchlist&s1=end&watchclosed=0&myaucpic=true
等に対して機能。
 明示的に"myaucpic=true"とか書いてないと、どちらかを判別できないので適用されない。
(ReadMore...)