Соскребание текста из файла в HTML-тегах

У меня есть файл, из которого я хочу извлечь даты, это исходный файл HTML, поэтому он полон кода и фраз, которые мне не нужны. Мне нужно извлечь каждый экземпляр даты, заключенный в определенный тег HTML:

abbr title="((это текст, который мне нужен))" data-utime="

Какой самый простой способ добиться этого?


person user1023420    schedule 18.03.2012    source источник
comment
Это не интеллектуальный анализ данных. Переименовано и помечено как web-scraping. Интеллектуальный анализ данных — это тип крупномасштабного статистического анализа; это в лучшем случае предварительная обработка для интеллектуального анализа данных. О, и почему это помечено как excel?   -  person Has QUIT--Anony-Mousse    schedule 18.03.2012


Ответы (2)


Если вы используете Excel VBA, установите ссылку (Инструменты - Ссылки) на библиотеку MSHTML (под названием Microsoft HTML Object Library в справочном меню)

Sub ScrapeDateAbbr()

    Dim hDoc As MSHTML.HTMLDocument
    Dim hElem As MSHTML.HTMLGenericElement
    Dim sFile As String, lFile As Long
    Dim sHtml As String

    'read in the file
    lFile = FreeFile
    sFile = "C:/Users/dick/Documents/My Dropbox/Excel/Testabbr.html"
    Open sFile For Input As lFile
    sHtml = Input$(LOF(lFile), lFile)

    'put into an htmldocument object
    Set hDoc = New MSHTML.HTMLDocument
    hDoc.body.innerHTML = sHtml

    'loop through abbr tags
    For Each hElem In hDoc.getElementsByTagName("abbr")
        'only those that have a data-utime attribute
        If Len(hElem.getAttribute("data-utime")) > 0 Then
            'get the title attribute
            Debug.Print hElem.getAttribute("title")
        End If
    Next hElem

End Sub

Я предположил, что файл был локальным, поскольку вы вызвали исходный файл. Если вам нужно сначала загрузить его, вам понадобится еще одна ссылка на MSXML и этот код

Sub ScrapeDateAbbrDownload()

    Dim xHttp As MSXML2.XMLHTTP
    Dim hDoc As MSHTML.HTMLDocument
    Dim hElem As MSHTML.HTMLGenericElement

    Set xHttp = New MSXML2.XMLHTTP
    xHttp.Open "GET", "file:///C:/Users/dick/Documents/My%20Dropbox/Excel/Testabbr.html"
    xHttp.send

    Do
        DoEvents
    Loop Until xHttp.readyState = 4

    'put into an htmldocument object
    Set hDoc = New MSHTML.HTMLDocument
    hDoc.body.innerHTML = xHttp.responseText

    'loop through abbr tags
    For Each hElem In hDoc.getElementsByTagName("abbr")
        'only those that have a data-utime attribute
        If Len(hElem.getAttribute("data-utime")) > 0 Then
            'get the title attribute
            Debug.Print hElem.getAttribute("title")
        End If
    Next hElem

End Sub
person Dick Kusleika    schedule 18.03.2012

если вы используете Java, вы можете использовать Jsoup. Это неясно из вашего вопроса, пожалуйста, уточните, что именно вы пытаетесь сделать

person Frank Vanbever    schedule 18.03.2012
comment
Итак, в основном у меня есть файл размером 15 МБ, который представляет собой выдержку из сохраненной веб-страницы. Страница содержит сообщения facebook, и каждое сообщение имеет отметку даты, я хочу провести анализ сообщений по дате, поэтому мне нужно извлекать каждый раз, когда появляется дата. Надеюсь, это проясняет ситуацию. - person user1023420; 18.03.2012
comment
Если язык программирования не имеет значения, я бы определенно рекомендовал JSoup. - person Frank Vanbever; 18.03.2012
comment
Или BeautifulSoup, если вы предпочитаете Python. - person Has QUIT--Anony-Mousse; 18.03.2012