我很想获得CSV或此页面中每个研讨会的描述。我该如何使用Regex或其他任何技术将其报废?
答案 0 :(得分:0)
这里是示例如何解析网页中的所有数据。请执行以下操作:
打开网页http://syp.ieee-pt.org/workshops.html e。 G。在Chrome中。按 F12 打开开发人员工具。转到控制台选项卡。复制以下代码,将其粘贴到控制台中,然后按 Enter2 :
(function () {
// create table for output
var addCell = function(htmlContent) {
var cell = row.insertCell(-1);
cell.innerHTML = htmlContent;
cell.style = 'border:black 1px solid;border-collapse:collapse;vertical-align:top;padding:3px;'
};
var table = document.createElement("table");
document.body.appendChild(table);
table.style = 'margin:10px;'
// add table header and body
var tHead = table.createTHead();
var row = tHead.insertRow(-1);
["Speaker","Title","Description","Location","Participants","Duration","Requirements","Bio"].forEach(addCell);
var tBody = document.createElement("tbody")
table.appendChild(tBody)
// parse each session
var sessions = document.querySelectorAll("div[id^='session']");
for (var i = 0; i < sessions.length; i++) {
// parse each workshop
var workshops = sessions[i].querySelectorAll("div.row-ws");
for (var j = 0; j < workshops.length; j++) {
// add row
row = tBody.insertRow(-1);
// parse speaker
var m = workshops[j].querySelector("div.ws-name-col").innerText.trim();
addCell(m);
// parse workshop title
m = workshops[j].querySelector("h4.panel-title").innerText.trim();
addCell(m);
// parse workshop description
var f = workshops[j].querySelector("div.panel-body div")
var r = f.innerHTML.match(/<br>(?:([\s\S]*?)<p><i class\="fa [\s\S]*|([\s\S]*$))/)
if (r) {
if (r[1]) {
m = r[1].trim();
} else {
m = r[2].trim();
}
} else {
m = "";
}
addCell(m);
// parse workshop info
var p = f.querySelector("p");
for (var k = 0; k < 4; k++) {
if (p) {
m = p.innerText.trim();
addCell(m);
p = p.nextElementSibling;
} else {
addCell("");
}
}
// parse bio
f = f.nextElementSibling;
if (f) {
m = f.innerHTML.match(/\<br\>([\s\S]*)/)[1]
addCell(m);
} else {
addCell("");
}
}
}
})();
在那之后,您可以在网页底部找到具有解析结果的表:
然后,不难将输出数据转换为CSV格式。