Web Scraping纽约州参议院法案在Google Sheets构建意识形态得分矩阵问题
Google Sheets爬虫提速优化方案
- 减少
IMPORTXML/IMPORTDATA这类抓取函数的调用次数:不要每个法案单独写一个抓取公式,先把所有待抓取的法案编号整理为单独列,用数组公式批量处理,也可以新增一个隐藏Sheet专门存储已抓取到的原始页面内容,后续所有内容解析都基于本地缓存的内容,避免重复向网站发起请求。 - 调整表格重算规则:点击「文件」-「设置」-「计算」,将重算频率改为「更改时和每小时」,不要使用「更改时和每分钟」的设置,同时表格中尽量避免使用
NOW()、TODAY()这类会触发高频自动重算的易失性函数。 - 已完成的数据转静态值:已经抓取完成、不需要再更新的法案数据,直接选中对应区域,右键选择「选择性粘贴」-「仅值」,清除已经用完的抓取公式,避免每次打开表格都重新运行旧数据的抓取逻辑。
- 拆分大容量表格:如果单次需要抓取的法案数量超过200条,拆分到多个独立的Google Sheets文件中分别处理,不要把所有抓取逻辑和数据都塞在同一个文件里。
发起人联合次数交叉矩阵生成方案
假设你的原始表格结构为:A列存储法案ID,B列存储法案主发起人,C列存储联合发起人(多个联合发起人可以用逗号分隔,也可以每行对应一个主发起人和单个联合发起人的绑定关系)
- 第一步:提取所有参议员的唯一值列表作为矩阵的行、列标题,用
UNIQUE(FLATTEN(B:B,C:C))即可得到全量不重复的参议员名单,将这份名单横向粘贴作为矩阵的列标题,纵向粘贴作为矩阵的行标题。 - 第二步:写入交叉计数公式,假设行标题存在F列(从F2开始),列标题存在第一行(从G1开始),G2单元格的公式写为
COUNTIFS(B:B,G$1,C:C,"*"&$F2&"*");如果你的原始表是每个联合发起人单独占一行,直接去掉通配符,公式写为COUNTIFS(B:B,G$1,C:C,$F2)即可,写完后把公式批量拉满整个矩阵区域就能得到所有组合的联合发起次数。 - 如果需要排除主发起人自己匹配自己的情况,直接在公式末尾加
* (G$1<>$F2),就可以让矩阵对角线上的数值自动变为0。
内容的提问来源于stack exchange,提问作者Elijah Appelson
相关产品推荐
相关产品推荐

