新手程序员如此提前,抱歉,如果我写的是措辞严厉或者只是简单的愚蠢。
我正在尝试从网站上抓取信息并将结果存储在数据库中。目标是获取所有列车编号,车站并查看列车是否迟到。我开始这样做的方式是循环,我一直在通过用字母表中的每个字母改变$LETTER
来构建这个URL,一次一个:https://reservia.viarail.ca/GetStations.aspx?q=$LETTER
然后我解析结果并将所有内容正确存储在数据库中。此脚本运行不需要很长时间,因此没有问题。当我试图让所有列车通过每个车站时,问题出现了。为此,我浏览了之前存储的每个站点(其中580个),然后使用此URL并使用站点代码更改$DATE
和YYY-MM-DD
中的$CODE
:
reservia.viarail.ca/tsi/GetTrainList.aspx?OriginStationCode=$CODE&Date=$DATE
所以,例如,我会有This link for Montreal
我会浏览表中的每个元素并查看列车编号,然后将其插入表格中。到目前为止,这是我的计划,但运行这个脚本(超过7分钟)需要花费太多时间,这是有意义的,因为我们打开了580页。
有什么更好的方法呢?我正在使用python,因为我正在尝试学习它所以我一直在导入urllib库并使用它来解码页面,然后我会对数据进行排序。感谢您的任何建议/帮助!
我喜欢这样的问题!好的,下面的代码应该几乎完全符合您的要求。
import json,urllib.request
import requests
import pandas as pd
from string import ascii_lowercase
alldata = []
for c in ascii_lowercase:
response = requests.get('https://reservia.viarail.ca/GetStations.aspx?q=' + c)
json_data = response.text.encode('utf-8', 'ignore')
df = pd.DataFrame(json.loads(json_data), columns=['sc', 'sn', 'pv']) # etc.,
alldata.append(df)
现在,只需将该列表加载到您的数据库中。完成。