提取事件描述正则表达式或其他

时间:2018-08-10 18:27:45

标签: regex web-scraping

我很想获得CSV或此页面中每个研讨会的描述。我该如何使用Regex或其他任何技术将其报废?

http://syp.ieee-pt.org/workshops.html

1 个答案:

答案 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("");
            }
        }
    }
})();

在那之后,您可以在网页底部找到具有解析结果的表:

output

然后,不难将输出数据转换为CSV格式。