我想从以下网站抓取公交车时刻表https://ul.se 。它是瑞典语的,但有英语选项,无论如何它不会影响我的主要问题。通过将我们感兴趣的位置放入搜索字段中,我们可以到达以下链接,这是我感兴趣的位置的示例。 https://www.ul.se/#/700600/0/Uppsala%20Centralstation%20(Uppsala)/700591/0/Stadsbiblioteket%20(Uppsala)//2/
通过右键单击并检查我想要抓取的元素,我可以在开发工具中看到它们,但在整个页面源代码中它没有列出。例如,通过复制我得到的选择器来查看下一类车的第一个可用时间
#travelResults > ul-search-journey-result-card:nth-child(3) > div > div.result-head > div.result-row.time > span.dpt-arr-time。 ng-绑定(bind)
这在我的代码中根本不起作用。即使我忘记了 BeautifulSoup (这就是我正在尝试使用的),并且只是在完整的 html 中搜索任何指示时间的数字,仍然什么也没有。在整个源代码中,似乎没有任何数字表示时间。我缺少什么?如何解决这个问题呢?感谢任何帮助,我对这一切都很陌生。
最佳答案
此示例演示如何使用 json
模块解析 json 数据中的路由:
import json
import requests
# url = "https://www.ul.se/#/700600/0/Uppsala%20Centralstation%20(Uppsala)/700591/0/Stadsbiblioteket%20(Uppsala)//2/"
api_url = "https://www.ul.se/api/journey/search"
params = {
"changeTimeType": "0",
"dateTime": "",
"from": "Uppsala Centralstation (Uppsala)", # <-- 1.
"fromPointId": "700600", # <-- 2.
"fromPointType": "0",
"maxWalkDistance": "3000",
"priorityType": "0",
"to": "Stadsbiblioteket (Uppsala)", # <-- 3.
"toPointId": "700591", # <-- 4.
"toPointType": "0",
"trafficTypes": "1,2,3,4,5,6,7,8,9,10,11",
"travelWhenType": "2",
"via": "",
"viaPointId": "",
"walkSpeedType": "0",
}
data = requests.get(api_url, params=params).json()
data = json.loads(data["Payload"])
# uncomment to print all data:
# print(json.dumps(data, indent=4))
for journey in data:
for route in journey["routeLinks"]:
print(
"{:<40} {:<30} {:<20} {:<20}".format(
route["from"]["name"],
route["to"]["name"],
route["arrivalDateTime"],
route["departureDateTime"],
)
)
print()
打印:
Uppsala Centralstation (Uppsala) Klostergatan (Uppsala) 2021-06-27T12:56:00 2021-06-27T12:55:00
Klostergatan (Uppsala) Stadsbiblioteket (Uppsala) 2021-06-27T13:01:00 2021-06-27T12:56:00
Uppsala Centralstation (Uppsala) Klostergatan (Uppsala) 2021-06-27T13:02:00 2021-06-27T13:00:00
Klostergatan (Uppsala) Stadsbiblioteket (Uppsala) 2021-06-27T13:07:00 2021-06-27T13:02:00
Uppsala Centralstation (Uppsala) Klostergatan (Uppsala) 2021-06-27T13:12:00 2021-06-27T13:10:00
Klostergatan (Uppsala) Stadsbiblioteket (Uppsala) 2021-06-27T13:17:00 2021-06-27T13:12:00
Uppsala Centralstation (Uppsala) Stadsbiblioteket (Uppsala) 2021-06-27T13:20:00 2021-06-27T13:15:00
Uppsala Centralstation (Uppsala) Klostergatan (Uppsala) 2021-06-27T13:20:00 2021-06-27T13:18:00
Klostergatan (Uppsala) Stadsbiblioteket (Uppsala) 2021-06-27T13:25:00 2021-06-27T13:20:00
Uppsala Centralstation (Uppsala) Klostergatan (Uppsala) 2021-06-27T13:21:00 2021-06-27T13:20:00
Klostergatan (Uppsala) Stadsbiblioteket (Uppsala) 2021-06-27T13:26:00 2021-06-27T13:21:00
关于python - 使用Python网络抓取公交车时刻表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68150230/