я пытаюсь просмотреть список URL-адресов, чтобы найти что-то в тексте html и записать его в новый список. У меня проблема в том, что, хотя у меня есть цикл for, он выводит только последний URL-адрес (в списке «URL-адресов» 500). Я не знаю, как заставить его итерировать запись, а затем переходить к следующей итерации вместо того, чтобы итерировать, а затем просто писать последний в списке. Любые идеи о том, как заставить это работать?
for url in urls:
try:
page = urlopen(url)
except:
print("Error opening the URL")
soup = BeautifulSoup(page, 'html.parser')
content = soup.find('div', {"class": "sp-m-box-section"})
article = []
for url in urls:
article = article.append(content) #here I am completely unsure how to handle it
print(article)
Спасибо за любые идеи.
Это решает вашу проблему?
article = []
for url in urls:
try:
page = urlopen(url)
except:
print("Error opening the URL")
soup = BeautifulSoup(page, 'html.parser')
content = soup.find('div', {"class": "sp-m-box-section"})
article.append(content)
print(article)
Готово. Спасибо, что указали на это!
Это действительно решило проблему под рукой. Спасибо! Теперь я буду строить это с условием if. Если текст найден, добавьте x, а если текст не найден, добавьте y. Посмотрим :D
Здесь несколько вопросов.
article
после каждой итерации, объявляя article=[]
. Таким образом, он всегда будет иметь пустой список, даже если вы добавите его. После последней итерации он не создает article=[]
, оставляя вам последнее добавленное.try/except
по-другому.В общем, попробуйте прочитать страницу. Если это не так, ошибка возникает и продолжается до следующего URL-адреса (нет смысла обрабатывать html, если он не может его прочитать... плюс вы также получите ошибку там)
Попробуйте это:
article = []
for url in urls:
try:
page = urlopen(url)
except:
print("Error opening the URL")
continue
soup = BeautifulSoup(page, 'html.parser')
content = soup.find('div', {"class": "sp-m-box-section"})
article.append(content.text) # <- here I'm assuming you want the actual text/content, not the html
print(article)
Спасибо! Для этого я получаю: «AttributeError: объект« str »не имеет атрибута« текст »». Я пробовал это с: суп.боди.финдалл (текст = «Пример») Но это дает ту же ошибку.
У меня была опечатка. Попробуйте еще раз с правкой, которую я сделал выше
Вот что я получаю: ---> 25 article.append(content.text) # <- здесь я предполагаю, что вам нужен фактический текст/контент, а не html AttributeError: объект 'NoneType' не имеет атрибута 'text'
удалить свое задание
article = article.append(content)
дляarticle.append(content)
@kdr