2017-09-17 1 views
0
url <-"http://news.chosun.com/svc/content_view/content_view.html?contid=1999080570392" 

hh = read_html(GET(url),encoding = "EUC-KR") 

#guess_encoding(hh) 

html_text(html_node(hh, 'div.par')) 
#html_text(html_nodes(hh ,xpath='//*[@id="news_body_id"]/div[2]/div[3]')) 

Ich versuche zu kriechen die Nachrichtendaten (nur für die Praxis) mit rvest in R.in R - mit rvest kriecht - nicht die Texte in HTML-Tag mit html_text Funktion

Als ich versuchte, erhalten Ich habe es auf der Homepage oben nicht geschafft, den Text von der Seite zu holen. (Xpath funktioniert auch nicht.)

Ich glaube nicht, dass ich den Link nicht finden konnte, die Texte enthalten, die ich auf der Seite erhalten möchte. Aber wenn ich versuche, den Text von diesem Link mit der Funktion html_text zu extrahieren, wird er als "" oder Leerzeichen extrahiert.

Ich kann nicht finden, warum .. Ich habe keine Erfahrung mit HTML und Crawlen.

Was ich vermute, ist das HTML-Tag, das Nachrichtenkörperkontexte enthält, hat "Klasse" und "Daten-Dzo" (ich weiß nicht, was es ist).

Also wenn jemand mir sagen, wie man es löst oder lassen Sie mich wissen, die Suchbegriffe, die ich auf Google finden kann, um dieses Problem zu lösen.

Antwort

2

Es baut ziemlich viel der Seite dynamisch. Dies sollte helfen.

Der Artikelinhalt ist in einer XML-Datei. Die URL kann aus dem Parameter contid erstellt werden. Entweder in einem vollständigen Artikel HTML-URL übergeben (wie das in Ihrem Beispiel) oder nur den contid Wert auf diese und es wird eine xml2xml_document mit den analysierten XML-Ergebnisse zurück:

#' Retrieve article XML from chosun.com 
#' 
#' @param full_url_or_article_id either a full URL like 
#'  `http://news.chosun.com/svc/content_view/content_view.html?contid=1999080570392` 
#'  or just the id (e.g. `1999080570392`) 
#' @return xml_document 
read_chosun_article <- function(full_url_or_article_id) { 

    require(rvest) 
    require(httr) 

    full_url_or_article_id <- full_url_or_article_id[1] 

    if (grepl("^http", full_url_or_article_id)) { 
    contid <- httr::parse_url(full_url_or_article_id) 
    contid <- contid$query$contid 
    } else { 
    contid <- full_url_or_article_id 
    } 

    # The target article XML URLs are in the following format: 
    # 
    # http://news.chosun.com/priv/data/www/news/1999/08/05/1999080570392.xml 
    # 
    # so we need to construct it from substrings in the 'contid' 

    sprintf(
    "http://news.chosun.com/priv/data/www/news/%s/%s/%s/%s.xml", 
    substr(contid, 1, 4), # year 
    substr(contid, 5, 6), # month 
    substr(contid, 7, 8), # day 
    contid 
) -> contid_xml_url 

    res <- httr::GET(contid_xml_url) 

    httr::content(res) 

} 

read_chosun_article("http://news.chosun.com/svc/content_view/content_view.html?contid=1999080570392") 
## {xml_document} 
## <content> 
## [1] <id>1999080570392</id> 
## [2] <site>\n <id>1</id>\n <name><![CDATA[www]]></name>\n</site> 
## [3] <category>\n <id>3N1</id>\n <name><![CDATA[사람들]]></name>\n <path ... 
## [4] <type>0</type> 
## [5] <template>\n <id>2006120400003</id>\n <fileName>3N.tpl</fileName> ... 
## [6] <date>\n <created>19990805192041</created>\n <createdFormated>199 ... 
## [7] <editor>\n <id>chosun</id>\n <email><![CDATA[[email protected] ... 
## [8] <source><![CDATA[0]]></source> 
## [9] <title><![CDATA[[동정] 이철승, 순국학생 위령제 지내 등]]></title> 
## [10] <subTitle/> 
## [11] <indexTitleList/> 
## [12] <authorList/> 
## [13] <masterId>1999080570392</masterId> 
## [14] <keyContentId>1999080570392</keyContentId> 
## [15] <imageList count="0"/> 
## [16] <mediaList count="0"/> 
## [17] <body count="1">\n <page no="0">\n <paragraph no="0">\n  <t ... 
## [18] <copyright/> 
## [19] <status><![CDATA[RL]]></status> 
## [20] <commentBbs>N</commentBbs> 
## ... 

read_chosun_article("1999080570392") 
## {xml_document} 
## <content> 
## [1] <id>1999080570392</id> 
## [2] <site>\n <id>1</id>\n <name><![CDATA[www]]></name>\n</site> 
## [3] <category>\n <id>3N1</id>\n <name><![CDATA[사람들]]></name>\n <path ... 
## [4] <type>0</type> 
## [5] <template>\n <id>2006120400003</id>\n <fileName>3N.tpl</fileName> ... 
## [6] <date>\n <created>19990805192041</created>\n <createdFormated>199 ... 
## [7] <editor>\n <id>chosun</id>\n <email><![CDATA[[email protected] ... 
## [8] <source><![CDATA[0]]></source> 
## [9] <title><![CDATA[[동정] 이철승, 순국학생 위령제 지내 등]]></title> 
## [10] <subTitle/> 
## [11] <indexTitleList/> 
## [12] <authorList/> 
## [13] <masterId>1999080570392</masterId> 
## [14] <keyContentId>1999080570392</keyContentId> 
## [15] <imageList count="0"/> 
## [16] <mediaList count="0"/> 
## [17] <body count="1">\n <page no="0">\n <paragraph no="0">\n  <t ... 
## [18] <copyright/> 
## [19] <status><![CDATA[RL]]></status> 
## [20] <commentBbs>N</commentBbs> 
## ... 

HINWEIS: ich um das stocherte Seite zu sehen, dies verletzt ihre Nutzungsbedingungen und es scheint nicht zu, aber ich habe auch auf Google Übersetzer verlassen und es hat vielleicht schwieriger zu finden. Es ist wichtig, sicherzustellen, dass Sie legal (und ethisch gesehen, wenn Sie Wert auf Ethik legen) diese Inhalte für den von Ihnen beabsichtigten Zweck verwenden.

+0

Vielen Dank für Ihren Rat zu Ihrer technischen Hilfe und Vorsicht. Beide waren sehr hilfreich. Ich werde besonders auf Ihre Vorsichtsmaßnahmen hinweisen. Danke nochmal. –