Пустые заголовочные узлы при раскраске сайта Fox News - PullRequest
2 голосов
/ 11 июня 2019

Я пишу небольшую программу для анализа настроений на R для различных новостных сайтов, и Fox News доставляет мне некоторые неприятности, когда я пытаюсь получить доступ к их новостному сайту "Trending" по адресу https://www.foxnews.com/trending/.

Я использую отличный пакет xml2 для чтения веб-страницы, а затем пытаюсь получить доступ к узлам, содержащим заголовки статей.Из функции «Проверка» в Chrome видно, что все они помечены как <h3> узлы, поэтому я хотел бы получить доступ ко всем узлам h3 и получить их информацию.Код для этого показан ниже:

library(xml2)
webpage <- "https://www.foxnews.com/trending/"
web_raw <- read_html(webpage)
node <- '//h3'
xml_find_all(web_raw, xpath = node)
# OUTPUT:
# {xml_nodeset (11)}
# [1] <h3></h3>
# [2] <h3></h3>
# [3] <h3></h3>
# ...[cont.]

Однако все возвращаемые узлы пусты (<h3></h3>), хотя количество возвращаемых узлов h3 совпадает с тем, что я ожидал.

Снова с помощью функции проверки Chrome для копирования XPath на один такой узел h3 возвращается следующее:

//*[@id="id_Helicopter"]/a/div[2]/h3

, который также не может вернуть ожидаемые заголовки, вместо этого создается полностью пустой набор узлов.

Затем я попытался вручную построить путь, но я могу получить только определенное количество узлов до того, как он снова начнет возвращать пустые узлы:

# This is the path to the last complete node returned
path <- '/html/body/div/div[@id="wrapper"]/div[@id="main"]/div/div[@class="module articles"]/div[@class="list"]'
# OUTPUT:
# {xml_nodeset (1)}
# [1] <div class="list">\n\t\t\t\t\t<div id="filter">\n\t\t\t\t\t\t... [cont.]

# When I access the unordered list one level deeper, it comes up empty
path <- '/html/body/div/div[@id="wrapper"]/div[@id="main"]/div/div[@class="module articles"]/div[@class="list"]/ul'
# OUTPUT:
# {xml_nodeset (1)}
# [1] <ul></ul>\n

Другие примечания:

Этот вопрос спрашивает о подобной проблеме, когда проблема была создана скриптом, который отображал большую часть веб-страницы при прокрутке пользователя - однако, их решение не работает для меня, потому что я не могу расширить веб-страницувручную.

Функциональный, сопоставимый код для New York Times показан ниже.Единственное отличие состоит в том, что NYT хранит свои заголовки в тегах h1 вместо h3.

library(xml2)
webpage <- "https://www.nytimes.com/trending/"
web_raw <- read_html(webpage)
node <- "//h1"
xml_find_all(web_raw, xpath = node)
# OUTPUT:
# {xml_nodeset (14)}
# [1] <h1 class="css-1om64mr">Trending</h1>\n
# [2] <h1>Justice Dept. Agrees to Turn Over Key Mueller Evidence to House</h1>
# [3] <h1>Elizabeth Warren Has Lots of Plans. Together, They Would Remake the Economy.</h1>
# ...[cont.]

Любой совет, чтобы помочь обойти то, что происходит?

...