[#46647] RubyでWindowsの常駐サービスプログラムを作る方法 — kouichi_someya@...

はじめまして。

12 messages 2009/12/16
[#46649] Re: RubyでWindowsの常駐サービスプログラムを作る方法 — "U.Nakamura" <usa@...> 2009/12/17

こんにちは、なかむら(う)です。

[ruby-list:46679] Re: xpathについて

From: 吉田石油店 吉田忍 <shinobu_yoshida@...>
Date: 2009-12-21 09:40:08 UTC
List: ruby-list #46679

-----Original Message-----
From: okkez [mailto:okkez000@gmail.com]
Sent: Thursday, December 17, 2009 10:16 AM
To: ruby mailing list
Subject: [ruby-list:46656] Re: xpathについて

okkez です。

2009年12月17日9:17 Soichi Ishida <zau_777_emacs@kki.biglobe.ne.jp>:
>
> soichi です。
>
> ruby 1.8.6
> ubuntu 8.04
> です。

この情報よりも ruby -v の実行結果を貼ってもらった方が助かります。
また使用しているライブラリのバージョンもあるとより良いです。
gem -v
gem list nokogiri
など。
# 特に Nokogiri は最近、新しいバージョンがリリースされたばかりなので。

>
> 先日は失礼しました。勉強不足でした。
> xpathに関して質問させてください。
>
> http://www11.ocn.ne.jp/~kui168/link37.html
>
> のページから東証一部の企業データベースを作るために、企業コードと企業名、そ
して種類(水産、機械など)を取り出したいと思います。(CSVファイルは探せばあ
るんですが、自分のRuby とHTMLの勉強のためにやってます。)
>
> 最終的にはdo end ループでhtmlの枝先を集めていくんでしょうが、最初の一つだ
けを拾ってみようとこんな感じにしてみましたが、まったくダメです。
> --------------------
> require 'rubygems'
> require 'open-uri'
> require 'nokogiri'
> require 'kconv'
> $KCODE = "utf8"
> url = "http://www11.ocn.ne.jp/~kui168/link37.html"
>
> doc = Nokogiri::HTML(open(url).read.toutf8)
> xpath = doc.at('/TABLE/TBODY/TR')   #ここで最初の一つを取り出せるかと思っ
たんです
> p doc.xpath(xpath).text()
> --------------------


xpath は関係ないです。
Nokogiri は charset を見て(?)自動的に文字コードを変換してくれるので toutf8
が不要です。
# 読み込んだ html に charset 指定があればですが。

つまり今回は読もうとした文字列の文字コードと html に指定されていた charset
が異なっているので
意図どおりにパース出来ていませんでした。(正しいオブジェクトができていなかっ
た)

>
> まず、xpath の指定なんですが、
> /TABLE/TBODY/TR
>  か
> /TABLE/TBODY/TR/TD
> かで迷います。どちらも出来なんですが(汗)

どっちも間違ってます。
//table[1]/tbody/tr[1]/td[1] とか //div[@id='Layer2']/table/tr[1]/td[1]
とかじゃないでしょうか。
# xpather などの Firefox addon を使うと簡単に xpath を確認できます。

Layer2 の部分を変えていけばすべての種類について情報を得ることができると思い
ます。



--
okkez
okkez000@gmail.com



In This Thread