Проблемы с BeautifulSoup и обработкой текстовых результатов - PullRequest
0 голосов
/ 20 февраля 2019

Я очистил веб-сайт с помощью BeautifulSoup, и после печати результатов я получаю 2 строки текста, затем 2 переноса строк, а затем еще 2 строки текста.Идеальный.

Однако, когда я вставляю этот кусок текста-строк-текста в тело письма, появляются только последние 2 строки текста.Почему исчезли первые 2 строки текста и разрывы 2 строк?

Вот мой код: Примечание. Я удалил адреса электронной почты отправителя, получателя и пароль.

Большое спасибо!

import bs4 as bs
import urllib
import smtplib

sauce = urllib.request.urlopen('https://webshop.meyerskantiner.dk/shop/2240/take-away/g/23332?date=22-02-2019').read()

soup = bs.BeautifulSoup(sauce, 'lxml')

for hit in soup.find_all("div", class_="name"):
    msg1 = hit.get_text()

msg2 = 'Subject: Canteen Intelligence\nHello,\n\nHere is the menu for the week.\n' + '\n\n\n\n' + msg1
conn = smtplib.SMTP('smtp.gmail.com', 587)
conn.ehlo()
conn.starttls()
conn.login('SendersEmail', "password")
conn.sendmail('SendersEmail', ['RecipientsEmail'],msg = msg2.encode('ascii', 'ignore').decode('ascii'))
conn.quit()

print(msg2)

1 Ответ

0 голосов
/ 20 февраля 2019
for hit in soup.find_all("div", class_="name"):
    msg1 = hit.get_text()

Каждый раз, когда выполняется этот цикл, он отбрасывает предыдущее содержимое msg1.Когда цикл будет завершен, msg1 будет содержать только последний удар.

Попробуйте вместо этого:

msg1 = ""
for hit in soup.find_all("div", class_="name"):
    msg1 = msg1 + hit.get_text()
...