python - 如何将表格从网页中抓取到数据框中
问题描述
我正在尝试用一页将表格刮入数据框中。
import pandas as pd
import requests
from bs4 import BeautifulSoup
res = requests.get("https://www.viewbase.com/funding")
soup = BeautifulSoup(res.content,'lxml')
table1 = soup.find_all('tr')
解决方案
该表是通过 JS 脚本填充的,因此 BS4 不会看到它。但是,您可以selenium
在headless
模式下使用并获取您需要的内容。
以下是如何执行此操作:
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get("https://www.viewbase.com/funding")
time.sleep(5)
headers = driver.find_elements_by_xpath('//*[@class="tablesorter-headerRow"][2]/th/div')
table = driver.find_element_by_xpath('//*[@id="inverse_swap"]')
columns = [i.text for i in headers]
data = [r.split() for r in table.text.split('\n')]
df = pd.DataFrame(data, columns=columns)
df.to_csv("data.csv", index=False)
推荐阅读
- python - 在 python 中未检测到 Chromedriver
- google-apps-script - 添加新行时,如何阻止静态单元格引用发生变化?
- intellij-idea - 如何解决问题:“指定的数据库用户/密码组合被拒绝”使用 Intellij IDEA?
- node.js - 对节点本地存储感到困惑
- java - IntentBuilder(Context,ComponentName) 在 IntentBuilder 中具有私有访问权限
- java - Xcode 的 Appium 服务器和 WebDriver 问题
- java - 如何为 PCollection 设置编码器
- > 在 Apache Beam 中?
- google-cloud-platform - 错误:(gcloud.builds.submit)错误 403:
没有 storage.objects.get 访问 Google Cloud Storage 对象的权限 - spring-boot - Spring boot 无法连接服务器上的 Elasticsearch 镜像
- javascript - 如何使用 JavaScript 格式化 JSON 日期?