2016-09-02 15 views
1

私はPythonでWebスクレーパーを作成しましたが、最後に印刷するときは、コードに表示されているようにダウンロードした「Bakerloo:+ info_from_website」を印刷します。 info_from_websiteと同じように出力し、 "Bakerloo:"文字列は無視します。とにかくそれを解決するのを見つけることができません。Python Web Scraper印刷の問題

import urllib 
import urllib.request 
from bs4 import BeautifulSoup 
import sys 

url = 'https://tfl.gov.uk/tube-dlr-overground/status/' 
page = urllib.request.urlopen(url) 
soup = BeautifulSoup(page,"html.parser") 

try: 
    bakerlooInfo = (soup.find('li',{"class":"rainbow-list-item bakerloo "}).find_all('span')[2].text) 
except: 
    bakerlooInfo = (soup.find('li',{"class":"rainbow-list-item bakerloo disrupted expandable "}).find_all('span')[2].text) 

bakerloo = bakerlooInfo.replace('\n','') 
print("Bakerloo  : " + bakerloo) 

答えて

2

私はdisruption-summaryクラスを持つ要素を取得し、代わりにCSS selectorを使用します。

import requests 
from bs4 import BeautifulSoup 

url = 'https://tfl.gov.uk/tube-dlr-overground/status/' 
page = requests.get(url) 
soup = BeautifulSoup(page.content, "html.parser") 

service = soup.select_one('li.bakerloo .disruption-summary').get_text(strip=True) 
print("Bakerloo: " + service) 

プリント:

Bakerloo: Good service 

(ここで使用してrequests)。


注あなたは、単に混乱要約を持つすべてのステーションを一覧表示したい場合に行うこと:

import requests 
from bs4 import BeautifulSoup 

url = 'https://tfl.gov.uk/tube-dlr-overground/status/' 
page = requests.get(url) 
soup = BeautifulSoup(page.content, "html.parser") 

for station in soup.select("#rainbow-list-tube-dlr-overground-tflrail-tram ul li"): 
    station_name = station.select_one(".service-name").get_text(strip=True) 
    service_info = station.select_one(".disruption-summary").get_text(strip=True) 

    print(station_name + ": " + service_info) 

プリント:

Bakerloo: Good service 
Central: Good service 
Circle: Good service 
District: Good service 
Hammersmith & City: Good service 
Jubilee: Good service 
Metropolitan: Good service 
Northern: Good service 
Piccadilly: Good service 
Victoria: Good service 
Waterloo & City: Good service 
London Overground: Good service 
TfL Rail: Good service 
DLR: Good service 
Tram: Good service