抓取网页的全部内容

埃里克·雷恩伯格·斯蒂布

由于CDC页面未保留历史信息,因此我正在尝试构建一个Shiny应用程序以跟踪疫苗的进展通过使用Chrome DevTools查看页面代码,我可以看到我想从每个<div>标签中提取class的信息"card-content",我尝试使用以下代码使用以下代码进行操作rvest

data <- read_html('https://covid.cdc.gov/covid-data-tracker/#vaccinations')
current_numbers <- data %>% html_nodes('div.card-content')

这将返回一个空的对象,其结构为“列表0”。

我还曾经readr::read_file生成一个.txt文件,以查看是否发生了奇怪的事情。它返回了一个文件

    <main id="maincontent">

    </main>

并且没有插入内容,尽管页眉和页脚代码似乎都在那里。

是否有更好的方法从<main>页面内容中提取数据rvest正确的包装吗?我也可以尝试bs4使用Python,但不知道如何从中制作一个Shiny应用程序。

对冲猪

网站正在处理动态内容,因此您不会以这种方式获得任何信息。

我没有那么深入r,但是正如您所提到的pythonbs4我可以举一个小例子。

from selenium import webdriver
from bs4 import BeautifulSoup
from time import sleep

driver = webdriver.Chrome(executable_path='C:\Program Files\ChromeDriver\chromedriver.exe')
url = "https://covid.cdc.gov/covid-data-tracker/#vaccinations"

driver.get(url)
sleep(2)

soup = BeautifulSoup(driver.page_source, "lxml")

driver.close()
[{'title': item.find('h4').get_text(), 'value': item.find('div').get_text()}  for item in soup.select('div.card-content')]

输出量

[{'title': 'Total Doses Distributed', 'value': '37.960.000'},
 {'title': 'Total Doses Administered', 'value': '17.546.374'},
 {'title': 'Number of People Receiving 1 or More Doses',
  'value': '15.053.257'},
 {'title': 'Number of People Receiving 2 Doses', 'value': '2.394.961'},
 {'title': 'Doses Administered in Long-Term Care Facilities ',
  'value': '2.089.181'}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章