Я уверен, что об этом спрашивали, однако я до сих пор не нашел решения, соответствующего моему конкретному случаю. Поскольку это мой первый проект на Python, у меня возникли проблемы с исправлением этой проблемы, так как он присутствует не всегда.
Проблема, с которой я сталкиваюсь, заключается в том, что, хотя мой итеративный список печатает статьи, которые я правильно просмотрел, когда я присоединяю список к другому списку, чтобы отправить его по электронной почте, иногда он пропускает первую строку в списке. Даже если я добавлю случайное значение во второй список, чтобы «подделать» значение, которое нужно пропустить, оно все равно пропустит первую статью, которую я хотел бы отправить по электронной почте, а также «поддельное» значение. Где я ошибаюсь?
import smtplib
import requests
import os
from bs4 import BeautifulSoup
data = requests.get('https://www.nytimes.com/section/technology')
soup = BeautifulSoup(data.text, 'html.parser')
body = soup.find("body")
arr1 = []
for h in body.findAll("h2", {"class" : "headline"} ):
arr1.append(h.text.strip())
print( "The articles below were curated from The New York Times Technology
section: ")
print(" ")
list1 = []
for item in arr1[:10]:
print(item)
list1.append("-" + item +'\n')
print_it = input("Would you like to send an email? Yes or no. ")
if print_it.lower() == 'yes':
#encodes to unicode and prevents it from causing problems
trial = u''.join(list1).encode('utf-8').strip()
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login("senderemail@email.com", "PASSWORD")
msg = (trial)
server.sendmail("senderemail@email.com", "recipientemail@email.com", msg)
server.quit()
os.system('cls')
print("Email has been sent.")
else:
os.system('cls')
print("No email has been sent!")
Спасибо за помощь!