【问题标题】:Scraping JavaScript (ReactTable) with BeautifulSoup使用 BeautifulSoup 抓取 JavaScript (ReactTable)
【发布时间】:2020-03-18 19:16:44
【问题描述】:

我想从 CDC 网站 (https://www.cdc.gov/coronavirus/2019-ncov/index.html) 上抓取与 COVID-19 相关的州级信息表。使用 BeautifulSoup 时,当我开始尝试从表中提取任何信息时遇到错误。任何帮助将不胜感激!

import pandas as pd
import requests
from bs4 import BeautifulSoup
from lxml import html 

url = 'https://www.cdc.gov/coronavirus/2019-ncov/index.html'
html_content = requests.get(url).text
soup = BeautifulSoup(html_content, "lxml")

gdp_table = soup.find("table", attrs={"class": "ReactTable"})
gdp_table_data = gdp_table.tbody.find_all("div")  # contains 2 rows

# Get all the headings of Lists
headings = []
for td in gdp_table_data[0].find_all("td"):
    # remove any newlines and extra spaces from left and right
    headings.append(td.b.text.replace('\n', ' ').strip())

print(headings)

如果您很难找到我所引用的表格,它位于网页的一半,位于美国地图下方。标题为“States”的地方点击旁边的“+”。

【问题讨论】:

  • 首先,您能否发布您遇到的实际错误?您尝试从中删除的元素是一个反应元素,它仅在页面加载时生成内容。你在这里有三个选择:要么使用像 selenium 这样的客户端,硬编码一些 js 来呈现元素,或者像@Dan-Dev 建议的那样获取源 csv。最简单的显然是第三个
  • 什么错误,你的问题是什么?
  • 大家好!第一次使用,我该如何发布我的错误?或者发布错误的最佳做法是什么。感谢您的耐心等待。

标签: javascript python selenium web-scraping beautifulsoup


【解决方案1】:

有一个生成网页的 CSV 文件。只需从https://www.cdc.gov/coronavirus/2019-ncov/map-data-cases.csv下载CSV

【讨论】:

  • 非常感谢!我整个上午都在网上寻找这个。我绝对愚蠢地错过了它。您是如何接触到源数据的?它是否在 HTML 中被引用而我错过了?链接到 CDC 网站上的其他地方?还有什么?我知道我的同事会问我。再次感谢您。
  • 在 Firefox 或 Chrome 中右键单击页面,选择 Inspect 或 Inspect Element,单击 Network 然后重新加载页面。您将看到页面加载时发出的所有请求。
  • 你是圣人,谢谢。作为学习点大概应该整理一下我的代码:)。
  • 不是我,5 星评论!
  • 比@Dan-Dev 多了一个。你知道我如何使用 python 自动从网站上提取数据吗?即使这只是朝着正确方向的友好推动。我需要每天或每周提取数据,具体取决于数据的新鲜度(我正在研究)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多