刮MTA地铁数据?
我手上有一个有趣的问题,我想知道在这里谁是谁更聪明,更有经验的这种事情可以给一些见解。刮MTA地铁数据?
基本上,我需要一对MTA地铁线列车的列车车站的完整列表。这里的数据是如何显示的mta.info网站上,为#3线,作为一个例子
http://web.mta.info/nyct/service/threelin.htm
反正是有,我可以凑这个数据,也许它写入一个文本或CSV文件?如果是这样,我会如何去做这样的事情?我觉得这可能是用Python来完成的,但我不确定,因为我刚刚在2天前开始用Python创建事物(我是一个Java人)。
我试图避免实际上手动将每个文件写入文档,但如果没有其他选择,我想我必须这样做。我需要的只是数据
如果有任何脚本利弊那里比可能会指出我在正确的方向,将不胜感激:)
@rjbman指出有一个free API可用。另请参阅:
但是,这里是涉及一种替代解决方案HTML解析使用BeautifulSoup
:
from bs4 import BeautifulSoup
import requests
url = "http://web.mta.info/nyct/service/threelin.htm"
response = requests.get(url)
soup = BeautifulSoup(response.content)
table = soup.find('table', summary='Table of 3 Subway Line Stops')
stops = [tr('td')[2].text.strip().replace('\n', '').split(' /')
for tr in table('tr', height=25)]
print stops
打印浑身解数以列表的列表:
[
[u'Harlem-148 Street', u'7 Avenue'],
[u'145 Street', u'Lenox Avenue'],
...
[u'Van Siclen Avenue', u'Livonia Avenue'],
[u'New Lots Avenue', u'Livonia Avenue']
]
为了获取页面内容,我使用了requests
模块。
看起来他们可以在http://web.mta.info/developers/开发者API。
除此之外,还有一些不同的Python库可以让你解析HTML代码;我自己优先考虑BeautifulSoup。您可以将所需的信息从网页中提取出来,然后使用file out输出。
短版:
这里的所有行和所有属于每一行站的列表:
长版:
我编写了一个用于解析MTA开发者资源数据的小型Python助手库:
https://github.com/loisaidasam/sub
MTA已提供了一些开发人员资源:
http://web.mta.info/developers/
而具体对MTA地铁系统的一些静态的内容,只要你阅读和这些开发者的数据方面遵守:
http://web.mta.info/developers/developer-data-terms.html
直接链接下载静态地铁数据:
http://web.mta.info/developers/data/nyct/subway/google_transit.zip
享受!
老兄,你是救命恩人!谢谢。 Python是一种非常强大的语言,这真是太神奇了,简直不敢相信我正在进入它!也比Java少冗长。我可以利用你的代码,传递一个URL列表并将列表输出写入CSV或文本文件。干杯! – 2014-09-03 01:35:24
@JadeByfield我仍然会先尝试使用API - 尝试使用我已链接的MTA-API python包装。留下HTML解析方法是最后的手段。谢谢。 – alecxe 2014-09-03 01:40:09