Reputation: 21
I am trying to make a programm which could do a text based search from an HTML webpage and write the columns under those attributes.The code I try is:
import time
from bs4 import BeautifulSoup
import urllib.request
response=urllib.request.urlopen('http://api.sl.se/api2/deviations.html?key=--------')
html=response.read()
soup = BeautifulSoup(html, 'html.parser')
field.value.text for field in document.find_all("Details") if field["Details"] == "MATCHING.Title"]
#text = soup.get_text(strip=True)
#print(soup.get_text("Details"))
for tag in soup.find_all(['Details']):
print(tag)
[field.value.text for field in document.find_all("field") if field["name"] == "MATCHING.Title"]
The needed output is the separate columns in CSV with Headings Details, FromDateTime, UpToDateTime,Updated
Upvotes: 0
Views: 247
Reputation: 168913
To parse things as JSON and output using the built-in CSV module:
import urllib.request
import json
import csv
import sys
response = urllib.request.urlopen('http://api.sl.se/api2/deviations.html?key=...')
data = json.loads(response.read())
headers = ['Details', 'FromDateTime', 'UpToDateTime', 'Updated']
writer = csv.writer(sys.stdout) # write to standard output; use `python script.py > something.csv` to redirect
writer.writerow(headers)
for event in data.get('ResponseData', []):
writer.writerow([event.get(key) for key in headers])
This outputs e.g.
Details,FromDateTime,UpToDateTime,Updated
"Buss 748 trafikerar ej mellan Jovisgatan till Polhemsgatan pga vägarbete. Hållplatserna Jovisgatan och Polhemsgatan är därmed indragna. Resenärer hänvisas till alternativa linjer 751,753,758 Och 783. Detta gäller båda riktningar.
Gäller från och med 2019-10-01 kl 0:00 beräknas vara klart till 2019-12-13 kl 23:30 ",2019-10-01T00:00:00,2019-12-13T23:30:00,2019-09-26T07:40:08.47+02:00
"Hållplats Brottby trafikplats och Söderhalls trafikplats är tillfälligt flyttad till hållplats för 625 för blåbuss 676 mot Tekniska Högskolan och buss 639 mot Stockholm och 696 mot Tekniska Högskolan från och med 2019-09-23 på grund av vägarbete.
Detta planeras pågå måndag till fredag mellan kl. 21:00 - 05:00 till och med 2019-10-04.
Resande från Söderhall trafikplats riktning Stockholm hänvisas till andra sidan av motorvägen vid bussvändslingan vid pendlarslingan.
Resande från Brottby trafikplats riktning Stockholm hänvisas ombordstigning på bron över E18.",2019-09-23T21:00:00,2019-10-04T05:00:00,2019-09-22T08:44:31.783+02:00
etc.
Upvotes: 2