我需要从此链接抓取数据:https://flo.uri.sh/visualisation/15396850/embed?auto=1

这是我的Python代码:

import pandas as pd
import html.parser
import requests
import urllib.request
from selenium import webdriver

base_url = "https://flo.uri.sh/visualisation/15396850/embed?auto=1"


class MyParser(html.parser.HTMLParser):

    def __init__(self, html):
        self.matches = []
        self.match_count = 0
        super().__init__()        

    def handle_data(self, data):
        self.matches.append(data)
        self.match_count += 1

    def handle_starttag(self, tag, attrs):
        attrs = dict(attrs)
        if tag == "div":
            if attrs.get("fl-layout-primary-container"):
                self.handle_data()
        else: return
        
url = base_url.format(page_number)

driver = webdriver.Chrome()
driver.get(url)

html = driver.page_source

parser = MyParser(html)
parser.feed(html)

for item in parser.matches:
    print(item)

我获得的输出包含该表的元数据.我还不知道如何将其转换为CSV表.

This是我的输出的样子.

推荐答案

您正在寻找的数据以Json的形式嵌入到HTML页面中.要将它们带到pandas rame,请将其保存为CSV,您可以使用下一个示例:

import json
import re

import pandas as pd
import requests

url = "https://flo.uri.sh/visualisation/15396850/embed?auto=1"
html_source = requests.get(url).text

column_names = json.loads(
    re.search(r"_Flourish_data_column_names = (.*})", html_source).group(1)
)
data = json.loads(re.search(r"_Flourish_data = (.*})", html_source).group(1))

all_data = []
for r in data["rows"]:
    all_data.append(r["columns"])

df = pd.DataFrame(all_data, columns=column_names["rows"]["columns"])
print(df.to_csv("data.csv", index=False))

收件箱data.csv(来自LibreOffice的屏幕截图):

enter image description here

Python相关问答推荐

在有限数量的唯一字母的长字符串中,找到包含重复不超过k次的所有唯一字母的最长子字符串

如何计算部分聚合数据的统计数据

如何在Power Query中按名称和时间总和进行分组

具有多个组的条形图的不同y标度

Altair -箱形图边界设置为黑色,中线设置为红色

使用Beautiful Soup获取第二个srcset属性

Python中的负前瞻性regex遇到麻烦

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

使用索引列表列表对列进行切片并获取行方向的向量长度

try 将一行连接到Tensorflow中的矩阵

运输问题分支定界法&

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

如何在图中标记平均点?

如何在turtle中不使用write()来绘制填充字母(例如OEG)

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

使用Python查找、替换和调整PDF中的图像'

替换现有列名中的字符,而不创建新列

python sklearn ValueError:使用序列设置数组元素

在Python中从嵌套的for循环中获取插值

如何在Great Table中处理inf和nans