3

Web サイト (html) から MATLAB に情報を取得しようとしています。次を使用して、オンラインからhtmlを文字列に取得できます。

urlread('http://www.websiteNameHere.com...');

文字列を取得したら、html ファイルの内容全体を含む非常に長い文字列変数を取得します。この変数から、非常に特定のクラスの値/文字を探しています。たとえば、html/web サイトには一連の行があり、次に対象のクラスが次の形式で含まれます。

...
<h4 class="price">
 <span class="priceSort">$39,991</span>
</h4>
<div class="mileage">
 <span class="milesSort">19,570 mi.</span>
</div>
...
<h4 class="price">
 <span class="priceSort">$49,999</span>
</h4>
<div class="mileage">
 <span class="milesSort">9,000 mi.</span>
</div>
...

と の間の情報を取得できるようにする必要が<span class="priceSort">あり</span>ます。つまり、上記の例では $39,991 と $49,999 です。これについて最善の方法は何ですか?タグが特定の開始と終了であり、同じである場合 ( と など<price>) </price>、問題はありません...

<span class="milesSort">また、この種の他の情報も見つけられるようにしたいので、最も堅牢な方法を知る必要があります。ありがとう!

4

2 に答える 2

0

strsplitを使用した簡単なソリューション

s = urlread('http://www.websiteNameHere.com...');

x = 'class="priceSort">'; %starting string x
y = 'class="milesSort">'; %starting string y
z = '</span>'; %ending string z

s2 = strsplit(s,x); %split for starting string x
s3 = strsplit(s,y); %split for starting string y

result1 = cell(size(s2,2)-1,1); %create cell array 1
result2 = cell(size(s3,2)-1,1); %create cell array 2

%loop through values ignoring first value
%(change ind=2:size(s2,2) to ind=1:size(s2,2) to see why)

%starting string x loop
for ind=2:size(s2,2)
    m = strsplit(s2{1,ind},z);
    result1{ind-1} = m{1,1};
end

%starting string y loop
for ind=2:size(s3,2)
    m = strsplit(s3{1,ind},z);
    result2{ind-1} = m{1,1};
end

お役に立てれば

于 2014-03-06T13:31:13.193 に答える