我正在尝试编写一个应用程序,它显示了前往城镇的公交车的时间表。你能帮我吗?
这是我写的,但它不起作用(我只想要页面上的标题或“时间”);
import requests
from bs4 import BeautifulSoup
def RuterBuss(max_pages):
page = 1
while page <= max_pages:
url = 'https://ruter.no/reiseplanlegger/Mellom/Fra/(2190085)
%C3%98ster%C3%A5s%20senter%20(B%C3%A6rum)/til/(3010200)Majorstuen
%20%5bT-bane%5d%20(Oslo)/etter/#st:0,sp:0,bp:0' + str(page)
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
for link in soup.findAll('span', {'class':'route-list__title ng-binding'}):
title = link.string
print(title)
page += 1
RuterBuss(1)
结果是:
Process finished with exit code 0
正如我所说,我希望公共汽车去的时间。你能看到我忘记或做错了吗
答案 0 :(得分:0)
原因是你的输出是
Process finished with exit code 0
基本上是因为您的代码没有达到任何打印语句。
更详细地说,这意味着soup
变量是while循环的第一个(也是唯一一个)迭代的空列表。
无论如何,我已经查看了您在脚本中使用的页面,我认为由于页面是通过AngularJS呈现的,因此您无法获取信息。事实上,我试图以这种方式改变你的for循环:
for link in soup.findAll('strong'):
因为我已经分析了来源,所需信息在<strong>
元素中可用,但结果如下:
{{travel.routeName}}
{{travel.formattedDepartureTime}} – {{travel.formattedArrivalTime}}
{{deviation.heading}}
{{deviation.heading}}
{{remark.heading}}
{{deviation.heading}}
我有另一个想法,就是在浏览器的开发者工具(控制台)中搜索,如果有任何XHR或JS来获取所请求的信息,可能是通过json,但我没有找到任何东西。