2012-03-18 3 views
1

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

титул сокр = «((это текст мне нужно))» данных utime =»

Что это самый простой способ достичь этого?

+0

Это * не * data-mining. Отправлено и переадресовано на [tag: web-scraping]. Data mining - это, по сути, тип крупномасштабного * статистического анализа *; это, как правило, препроцессор для интеллектуального анализа данных. О, и почему это помечено знаком «excel»? –

ответ

0

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

+0

Итак, у меня есть файл размером 15 Мбайт, который является выпиской из сохраненной веб-страницы. Страница содержит сообщения facebook, и каждое сообщение имеет штамп даты, я хочу провести анализ сообщений в день, поэтому мне нужно извлекать каждый раз, когда появляется дата. Надеюсь, что это очистит. – user1023420

+0

Если язык программирования не имеет значения, я бы, конечно, рекомендовал JSoup –

+0

или BeautifulSoup, если вы предпочитаете python. –

5

Если вы используете 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