#python #python-3.x
#python #python-3.x
Вопрос:
я использую phyton 3.6.9 из debian, и у меня проблема с моим кодом.
Что делает мой код?Мой код извлекает новости из URL-адреса xml (используя bs4 и urllib) и публикует их на канале telegram с использованием библиотеки telepot. Проверка выполняется в день публикации.
В чем моя проблема?Мой код отлично работает из Windows. Из Linux он выполняет очистку правильно, но когда я дошел до последних новостей на сайте, он вернул эту ошибку:
Traceback (most recent call last):
File "bot.py", line 32, in <module>
get_data()
File "bot.py", line 27, in get_data
prev_date_time = datetime.datetime.strptime(news_list[0].pubDate.text, '%a, %d %b %Y %H:%M:%S %z')
AttributeError: 'NoneType' object has no attribute 'text'
Я уже пробовал некоторые решения, представленные здесь, в Stackoverflow!
Это мой код:
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import requests
import time
import datetime
import telepot
BOT_TOKEN = " ... "
bot = telepot.Bot(BOT_TOKEN)
def get_data():
global prev_date_time
site = 'http://www.televideo.rai.it/televideo/pub/rss102.xml'
op = urlopen(site)
rd = op.read()
op.close()
sp_page = soup(rd, 'html.parser')
news_list = sp_page.find_all('item')
for news in news_list:
if prev_date_time and prev_date_time >= datetime.datetime.strptime(news.pubDate.text, '%a, %d %b %Y %H:%M:%S %z'):
break
print(news.title.text)
bot.sendMessage('-1001335964270', news.title.text)
if news_list:
prev_date_time = datetime.datetime.strptime(news_list[0].pubDate.text, '%a, %d %b %Y %H:%M:%S %z')
prev_date_time = None
while True:
get_data()
time.sleep(5)
Ответ №1:
Здесь элемента pubdate
нет pubDate
, и python чувствителен к регистру, поэтому вам нужно использовать точное имя:
prev_date_time = datetime.datetime.strptime(news_list[0].pubdate.text, '%a, %d %b %Y %H:%M:%S %z')