刮掉MTA地铁数据?

时间:2014-09-03 01:15:20

标签: python web-scraping

我手上有一个有趣的问题,我想知道这里有谁更聪明,更有经验的人可以提供一些见解。

基本上,我需要一对MTA地铁列车列车的完整列表。以下是数据在mta.info网站上的显示方式,对于#3行,作为示例

http://web.mta.info/nyct/service/threelin.htm

无论如何我可以抓取这些数据,也可以将其写入文本或csv文件?如果是这样,我会怎么做呢?我觉得这可能是用Python完成的,但我不确定,因为我刚刚开始用Python创建东西2天前(我是一个Java人员)。

我试图避免实际上手动将这些内容写入文档中,但如果没有其他选择,我想我必须这样做。我只需要数据

如果那里有任何脚本专业人员可能指向正确的方向,那将非常感激:)

3 个答案:

答案 0 :(得分:2)

@rjbman指出有一个free API可用。另见:

但是,这是一个使用BeautifulSoup进行HTML解析的替代解决方案:

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模块。

答案 1 :(得分:1)

看起来他们在http://web.mta.info/developers/处有一个开发人员API。

除此之外,还有一些不同的Python库可以解析HTML代码;我自己优先BeautifulSoup。您可以从网页上提取所需信息,然后使用file out输出。

答案 2 :(得分:1)

简短版

这里列出了属于每一行的所有行和所有停靠点:

https://raw.githubusercontent.com/loisaidasam/sub/5369ebc22ef57b932d57066a357fd4cd5a41a402/stops_per_subway_line.txt

长版

我编写了一个小的Python帮助程序库,用于解析来自MTA的开发人员资源的数据:

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

享受!