如何抓取文本(不是 HTML)Table
How to Scrape Text (not HTML) Table
我需要抓取与空格对齐的数据 table。这不是 HTML table,但我很难做到正确。 table 看起来像:
2017-10-28 @Westmont 100 Cal Lutheran 76
2017-10-30 @Arizona Chr 94 E New Mexico 87
2017-10-31 @Walsh 91 Mt Union 80
2017-10-31 @Card Stritch 71 Maranatha Bap 42
2017-11-01 @WV Tech 82 Glenville St 80
...
2018-03-31 Villanova 95 Kansas 79 P NCAA Tournament San Antonio, TX
2018-03-31 Michigan 69 Loyola-Chicago 57 P NCAA Tournament San Antonio, TX
2018-04-02 Villanova 79 Michigan 62 P NCAA I Championship San Antonio, TX
因为它是纯文本,所以我将它粘贴到文本文档中并使用了read.table
,但是我丢失了将近一半的行,我不知道为什么。我想出了如何从生成它的行中提取我想要的数据,所以我正在寻找两种解决方案之一:
- 一种简单的方法来抓取看起来像这样的 table (link to actual data),并将其放入数据框(或 csv)中。
- 一种获取所有数据行的方法/我丢失大量数据的原因(我得到 16445 行中的 8,861 行)
这里有一个 python 脚本可以完成这项工作。基本上,您可以使用自己喜欢的编程语言以及一些简单的正则表达式技巧来完成。
import re
with open('data.txt', 'r') as inputFile:
with open ('cleanedUp.csv', 'w') as outputFile:
regex = re.compile("\s\s+|\s@")
for line in inputFile:
cleanedUp = regex.split(line.strip())
outputFile.write(','.join(cleanedUp) + '\n')
我需要抓取与空格对齐的数据 table。这不是 HTML table,但我很难做到正确。 table 看起来像:
2017-10-28 @Westmont 100 Cal Lutheran 76
2017-10-30 @Arizona Chr 94 E New Mexico 87
2017-10-31 @Walsh 91 Mt Union 80
2017-10-31 @Card Stritch 71 Maranatha Bap 42
2017-11-01 @WV Tech 82 Glenville St 80
...
2018-03-31 Villanova 95 Kansas 79 P NCAA Tournament San Antonio, TX
2018-03-31 Michigan 69 Loyola-Chicago 57 P NCAA Tournament San Antonio, TX
2018-04-02 Villanova 79 Michigan 62 P NCAA I Championship San Antonio, TX
因为它是纯文本,所以我将它粘贴到文本文档中并使用了read.table
,但是我丢失了将近一半的行,我不知道为什么。我想出了如何从生成它的行中提取我想要的数据,所以我正在寻找两种解决方案之一:
- 一种简单的方法来抓取看起来像这样的 table (link to actual data),并将其放入数据框(或 csv)中。
- 一种获取所有数据行的方法/我丢失大量数据的原因(我得到 16445 行中的 8,861 行)
这里有一个 python 脚本可以完成这项工作。基本上,您可以使用自己喜欢的编程语言以及一些简单的正则表达式技巧来完成。
import re
with open('data.txt', 'r') as inputFile:
with open ('cleanedUp.csv', 'w') as outputFile:
regex = re.compile("\s\s+|\s@")
for line in inputFile:
cleanedUp = regex.split(line.strip())
outputFile.write(','.join(cleanedUp) + '\n')