頁面元素采用這種模式:
<ul class="scorer-info">
<li class=" ">
<span class="scorer">
<a href="/players/maximilian-mittelstadt/359295/">
M. Mittelst?dt
</a>
<span class="minute">
3'
</span>
<span class="assist">
(assist by
<a href="/players/salomon-kalou/2540/">S. Kalou</a>)
</span>
</span>
<span class="score">1 - 0</span>
<span class="scorer">
</span>
<div class="clearfix"></div>
</li>
<li class=" ">
<span class="scorer">
</span>
<span class="score">1 - 1</span>
<span class="scorer">
<span class="minute">
7'
</span>
<a href="/players/serge--gnabry/213651/">
S. Gnabry
</a>
</span>
<div class="clearfix"></div>
</li>
<li class=" ">
<span class="scorer">
</span>
<span class="score">1 - 2</span>
<span class="scorer">
<span class="minute">
49'
</span>
<a href="/players/serge--gnabry/213651/">
S. Gnabry
</a>
<span class="assist">
(assist by
<a href="/players/james-david-rodriguez/72408/">J. Rodríguez</a>)
</span>
</span>
<div class="clearfix"></div>
</li>
<li class=" ">
<span class="scorer">
<a href="/players/davie-selke/213931/">
D. Selke
</a>
<span class="minute">
67'
</span>
</span>
<span class="score">2 - 2</span>
<span class="scorer">
</span>
<div class="clearfix"></div>
</li>
<li class=" ">
<span class="scorer">
</span>
<span class="score">2 - 3</span>
<span class="scorer">
<span class="minute">
98'
</span>
<a href="/players/kingsley-coman/265385/">
K. Coman
</a>
<span class="assist">
(assist by
<a href="/players/robert-lewandowski/41310/">R. Lewandowski</a>)
</span>
</span>
<div class="clearfix"></div>
</li>
</ul>
如果我需要,補丁收集的值是:
跨度.分鐘 | 跨度分數 |
---|---|
3' | 1 - 0 |
7' | 1 - 1 |
49' | 1 - 2 |
67' | 2 - 2 |
98' | 2 - 3 |
每個都span.minute
包含一個span.score
,我想找到最后一個span.score
小于span.minute
或等于的90
。在這個例子中,最后一個是67
→2-2
我的代碼:
function score() {
var ss = SpreadsheetApp.getActive().getSheetByName('copy');
var response = UrlFetchApp.fetch('URL URL URL URL', {muteHttpExceptions: true});
if (response.getResponseCode() == 404) {
} else {
var contentText = response.getContentText();
var $ = Cheerio.load(contentText);
var list_minutes = [];
var list_score = [];
var minute_goal = $('ul.scorer-info > li > span.scorer > span.minute');
var score_goal = $('ul.scorer-info > li > span.score');
minute_goal.each((index, element) => {list_minutes.push([($(element).text().trim()).substring(0, ($(element).text().trim()).indexOf("'"))]);});
score_goal.each((index, element) => {list_score.push([($(element).text().trim()).replace(/ /g,'')]);});
var before_90 = '0-0';
var i=0;
var max = list_minutes.length
for(i; i<max; i ){
if (list_minutes[i][0] <= 90) {
before_90 = list_score[i][0];
}
}
Logger.log(before_90)
}
}
輸出Logger.log
:
2-2
正如所見,這樣我需要創建幾個串列,直到我可以在最后一個回圈中找到90'
.
有沒有一種改進的方法來減少這些任務數量并至少在路徑之間生成一個回圈以減少代碼大小和執行時間?
uj5u.com熱心網友回復:
為了檢索你的期望值,下面的修改怎么樣?
從
var list_minutes = [];
var list_score = [];
var minute_goal = $('ul.scorer-info > li > span.scorer > span.minute');
var score_goal = $('ul.scorer-info > li > span.score');
minute_goal.each((index, element) => {list_minutes.push([($(element).text().trim()).substring(0, ($(element).text().trim()).indexOf("'"))]);});
score_goal.each((index, element) => {list_score.push([($(element).text().trim()).replace(/ /g,'')]);});
var before_90 = '0-0';
var i=0;
var max = list_minutes.length
for(i; i<max; i ){
if (list_minutes[i][0] <= 90) {
before_90 = list_score[i][0];
}
}
Logger.log(before_90)
至:
var minute_goal = $('ul.scorer-info > li > span.scorer > span.minute').toArray();
var score_goal = $('ul.scorer-info > li > span.score').toArray();
var res = minute_goal.reduce((ar, e, i) => {
var n = parseInt($(e).text(), 10);
if (n <= 90) ar.push([n, $(score_goal[i]).text().trim().replace(/ /g, '')]);
return ar;
}, []).pop();
console.log(res) // [ 67, '2-2' ]
- 當為顯示 HTML 資料運行此修改后的腳本時,您可以
[ 67, '2-2' ]
在日志中看到 的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/493756.html