Ошибка добавления заказа к данным, полученным с помощью Beautiful Soap - PullRequest
0 голосов
/ 24 января 2020

При добавлении заказа к данным, полученным с помощью Beautiful Soap, выдает ошибку. Как мне сделать это с помощью перечисленной функции? Я хочу получить вывод, как показано ниже.

import requests
from bs4 import BeautifulSoup

url = 'https://tfl.gov.uk/bus/route/{}'

data = {}
for line_no in range(1, 3):
    soup = BeautifulSoup(requests.get(url.format(line_no)).content, 'html.parser')
    for val in soup.select('input[name="stop-naptan-id"][value]'):
        data.setdefault(line_no, []).append((line_no, val.find_next('a').contents[0].strip(), val['value']))

from pprint import pprint

pprint(data)

--- ПРИМЕР ВЫХОДА ---

**1** (1, 'Museum Street', '490010131WB'),

**2** (1, 'Kingsway / Holborn Station', '490000112M'),

**3** (1, 'Aldwych / The Royal Courts Of Justice', '490019704K'),

**4** (1, 'Aldwych / Somerset House', '490003193S'),

**5** (1, 'Waterloo Bridge / South Bank', '490014271N'),*

1 Ответ

0 голосов
/ 24 января 2020

У вас была ошибка при использовании вашего скрытого ввода.

Пожалуйста, посмотрите на это, оно должно дать вам то, что вы хотите:

КОД:

import requests
from bs4 import BeautifulSoup

url = 'https://tfl.gov.uk/bus/route/{}'

data = {}
for line_no in range(1, 3):
    soup = BeautifulSoup(requests.get(url.format(line_no)).content, 'html.parser')
    for val in soup.find_all('a', {'class': 'stop-link'}):
        data.setdefault(line_no, []).append((line_no, val.contents[0].strip(), val.get('href').split('/')[3]))

from pprint import pprint

pprint(data)

РЕЗУЛЬТАТЫ:

{1: [(1, 'New Oxford Street', '490000235Z'),
     (1, 'Museum Street', '490010131WB'),
     (1, 'Kingsway / Holborn Station', '490000112M'),
     (1, 'Aldwych / The Royal Courts Of Justice', '490019704K'),
     (1, 'Aldwych / Somerset House', '490003193S'),
     (1, 'Waterloo Bridge / South Bank', '490014271N'),
     (1, 'Waterloo Station / Waterloo Road', '490000254E'),
     (1, 'The Old Vic', '490013485S1'),
     (1, "St George's Circus", '490012693S2'),
     (1, 'Elephant & Castle / London Road', '490009281E'),
     (1, 'Elephant & Castle / New Kent Road', '490000073K'),
     (1, 'Rodney Place', '490011632BA'),
     (1, "Bricklayer's Arms / New Kent Road", '490003658BC'),
     (1, "Bricklayer's Arms / Tower Bridge Road", '490004315BH'),
     (1, 'Griggs Place', '490007533E'),
     (1, 'Fendall Street', '490006792E'),
     (1, 'Spa Road', '490012367E'),
     (1, 'Alscot Road', '490003275E'),
     (1, 'Harris Academy', '490003533E'),
     (1, "Southwark Park Road / St James's Road", '490012353E'),
     (1, 'Anchor Street', '490003311E'),
     (1, 'Lynton Road', '490009482S'),
     (1, 'Galleywall Road / South Bermondsey Stn', '490007086B'),
     (1, 'Beamish House', '490003716E'),
     (1, 'Corbetts Lane', '490005603E'),
     (1, 'Warndon Street', '490014228E'),
     (1, 'Surrey Quays Station', '490000229O'),
     (1, 'Rotherhithe Police Station', '490011723P'),
     (1, 'Canada Water Bus Station', '490004733D')],
 2: [(2, 'Marylebone Station', '490000145L'),
     (2, 'Old Marylebone Town Hall', '490000285Z'),
     (2, 'Dorset Street', '490015021G'),
     (2, 'Portman Square', '490004096H'),
     (2, 'Orchard Street / Selfridges', '490010622L'),
     (2, 'Marble Arch Station / Park Lane', '490000144R'),
     (2, 'Dorchester Hotel', '490006111S1'),
     (2, 'London Hilton Hotel', '490009277B'),
     (2, 'Hyde Park Corner', '490000119F'),
     (2, 'Wilton Street', '490014728S'),
     (2, 'Neathouse Place', '490010164L'),
     (2, 'Rochester Row', '490011617E'),
     (2, 'Stanford Street', '490012542S'),
     (2, 'Pimlico Station', '490000180D'),
     (2, 'Vauxhall Bus Station', '490000247D'),
     (2, 'Vauxhall Park', '490014021V'),
     (2, 'Wheatsheaf Lane', '490014560S'),
     (2, 'Tate Library', '490013161S'),
     (2, 'Thorne Road', '490013623S'),
     (2, 'South Lambeth Road / Stockwell Stn', '490000223B'),
     (2, 'Stockwell Gardens', '490012832X'),
     (2, 'Irving Grove', '490008500S'),
     (2, 'Stockwell Green', '490012833S1'),
     (2, 'Stansfield Road', '490012578B'),
     (2, 'Brixton Academy', '490007523B'),
     (2, 'Brixton Station', '490000031Q'),
     (2, "St Matthew's Church", '490012808Z'),
     (2, 'St Matthews Estate', '490012810S'),
     (2, 'Morval Road', '490010053S'),
     (2, 'Brixton Water Lane', '490015275S2'),
     (2, 'Jubilee Primary School', '490006080S'),
     (2, 'Craignair Road', '490005366S'),
     (2, 'Upper Tulse Hill', '490013950S'),
     (2, 'High Trees', '490008194S'),
     (2, 'Tulse Hill Tavern', '490013839A'),
     (2, 'Tulse Hill Station', '490001298G'),
     (2, 'Elmcourt Road', '490014508H'),
     (2, 'Lancaster Avenue', '490008927L'),
     (2, 'Norwood Road / Robson Road', '490013655P'),
     (2, 'West Norwood Station', '490001331T'),
     (2, 'Norwood Bus Garage', '490010444W')]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...