вывод результата 2 для циклов в одной строке - PullRequest
0 голосов
/ 07 июня 2018

Я довольно новичок в веб-поиске в Python;и после прочтения большинства уроков по этой теме в Интернете я решил попробовать.Наконец-то у меня работает один сайт, но вывод не отформатирован должным образом.

import requests
import bs4
from bs4 import BeautifulSoup
import pandas as pd
import time


page = requests.get("https://leeweebrothers.com/our-food/lunch-boxes/#")
soup = BeautifulSoup(page.text, "html.parser")

for div in soup.find_all('h2'): #prints the name of the food"
    print(div.text)
for a in soup.find_all('span', {'class' : 'amount'}): #prints price of the food
    print(a.text)

Вывод

Я хочу, чтобы оба названия продуктов были напечатаныбок о бок с соответствующей ценой на еду, соединенной знаком "-" ... Буду признателен за любую предоставленную помощь, спасибо!

Редактировать: После комментариев @Reblochon Masque ниже - я столкнулся с другой проблемой;Как вы можете видеть, есть $ 0,00, который является значением из встроенной корзины покупок на веб-сайте, как бы я исключил это как выброс и продолжил бы двигаться вниз по циклу, гарантируя, что другие элементы в цене «двигаются» вверх, чтобы соответствоватьк правильной еде?

Output2

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Лучше всего использовать функцию zip в цикле for, но мы можем сделать это и так.Это просто для того, чтобы показать, что мы можем сделать, используя indexing два списка.

names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for index in range(len(names)):
    print('{} - {}'.format(names[index].text, rest[index].text))
0 голосов
/ 07 июня 2018

Вы можете сжать два результата:

names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for div, a in zip(names, rest):
    print('{} - {}'.format(div.text, a.text))
    # print(f"{div.text} - {a.text}")   # for python > 3.6
...