Как объединить 2 Webscraped списки вместе - PullRequest
0 голосов
/ 21 мая 2018

Я попытался объединить 2 списков с веб-списками в один список, но все, что он делает, это показывает один экземпляр.(У меня уже есть список имен и список адресов, я просто хочу присоединиться к ним).

from bs4 import BeautifulSoup
import urllib.request
def get_HTML(url):
    response = urllib.request.urlopen(url)
    html = response.read()
    return html

ПЕРВЫЙ СПИСОК:

venues_html = get_HTML('http://www.cxra.com/venues/new-york/')
soup = BeautifulSoup(venues_html, "lxml")
for venue in soup('a', attrs={'href' : '#', 'onclick' : 'return false;'}):
    display (venue.text)

Вывод:

'Manhattan Center Studios'
'Ellis Island'
'The TimesCenter'
'The Altman Building'
'NYIT Auditorium on Broadway'

ВТОРОЙ СПИСОК

for info in soup.findAll('div', attrs={'class' : 'infoUnit col-md-6'}):
    display (info.text)

Вывод:

'\n \n311 West 34th Street\r\nNew York City, 94710\n\n212.613.5536\n'
'\n \nEllis Island\r\nNew York, NY 10004\n\n212.613.5535\n'
'\n \n242 W 41st St\r\nNew York, NY 10036\n\n212.613.5535\n'
'\n \n135 W 18th St\r\nNew York, NY 10011\n\n212.613.5535\n'
'\n \n1871 Broadway\r\nNew York, NY 10023\n\n212.613.5536\n'

Попытка объединения двух:

print ("Venue: " + venue.text + info.text)

Вывод:

Venue: NYIT Auditorium on Broadway

1871 Broadway
New York, NY 10023

212.613.5536

Я хочу, чтобы это делалось для всех разных мест, а не только для одного.Я пробовал циклы, но они, кажется, постоянно показывают один и тот же экземпляр.

1 Ответ

0 голосов
/ 21 мая 2018

Не зная точно, что делает display (), я предполагаю, что вы печатаете не все «экземпляры», потому что вы получаете результаты только из самой последней итерации обоих циклов for.

Без структурных изменений самый быстрый способ - сохранить результаты двух записок bs4 в два списка и использовать цикл для отображения их содержимого.

from bs4 import BeautifulSoup
import urllib.request
import sys

def get_HTML(url):
    response = urllib.request.urlopen(url)
    html = response.read()
    return html

venues_html = get_HTML('http://www.cxra.com/venues/new-york/')
soup = BeautifulSoup(venues_html, "lxml")
print('data scrapped')

list1 = []
list2 = []

for venue in soup('a', attrs={'href' : '#', 'onclick' : 'return false;'}):
     list1.append(venue.text)

for info in soup.findAll('div', attrs={'class' : 'infoUnit col-md-6'}):
    list2.append(info.text)

if len(list1) != len(list2):
    print('Two lists not aligned, aborting')
    sys.exit(0)

for index in range(len(list1)):
    try:
        print ("Venue: ", list1[index],  list2[index])
    except Exception as e:
        print(e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...