我正在尝试从网站(html)获取信息到MATLAB中。我可以使用以下命令将html从在线变为字符串:
urlread('http://www.websiteNameHere.com...');
一旦我有了字符串,我有一个非常LONG的字符串变量,包含整个html文件内容。从这个变量,我在非常具体的类中寻找值/字符。例如,html / website将有一堆行,然后将以下列形式包含感兴趣的类:
...
<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">
以及其他此类信息。谢谢!
答案 0 :(得分:0)
试试这个并告诉我们它是否适合您 -
url_data = urlread('http://www.websiteNameHere.com...');
start_string = '<span class="priceSort">'; %// For your next case, edit this to <span class="milesSort">
stop_string = '</span>';
N1 = numel(start_string);
N2 = numel(stop_string);
start_string_ind = strfind(url_data,start_string);
for count1 = 1:numel(start_string_ind)
relative_stop_string_ind = strfind(url_data(start_string_ind(count1)+N1:end),stop_string);
string_found_start_ind = start_string_ind(count1)+N1;
string_found = url_data(string_found_start_ind:string_found_start_ind+relative_stop_string_ind(1)-2);
disp(string_found);
end
答案 1 :(得分: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
希望这有帮助