#python #python-requests-html
#питон #python-requests-html
Вопрос:
Я работаю над небольшим скриптом для извлечения потоков из TheTechGame.com и настройте его так, чтобы он добавлял информацию в список, но когда я перебираю этот список для отображения элементов в терминале, он просто отображает имена значений вместо заголовка или ссылки.
Код:
from requests_html import HTMLSession
session = HTMLSession()
r = session.get("https://thetechgame.com/Forums/f=4/offtopic-discussion.html")
topic_title = r.html.find("a.topic-title")
topic_list = []
for topic_name in topic_title:
topic_info = {
'title': topic_name.text,
'link': topic_name.absolute_links
}
topic_list.append(topic_info)
for items in topic_list:
print(' '.join(items))
Выходной сигнал:
title link
title link
...
title link
title link
Я бы хотел , чтобы заголовок темы отображался topic_name.text
, а ссылка отображалась после этого topic_name.absolute_links
.
Ответ №1:
Похоже, вам нужно получить доступ к значениям (вместо имен ключей, как это происходит в настоящее время в .join()
функции). Что-то вроде этого даст вам результат, который звучит так, как вы ищете. Здесь вы будете перебирать каждый словарь в списке, а затем получать доступ к значениям с помощью title
ключа и link
ключа.
for t in topic_list:
print(t['title'], t['link'])
Это даст вам следующий результат:
TheTechGame Special Award Holders Special Award Tutorials {'https://www.thetechgame.com/Forums/t=7462502/thetechgame-special-award-holders-special-award-tutorials.html'}
TTG All Time High Leaderboard {'https://www.thetechgame.com/Forums/t=7722177/ttg-all-time-high-leaderboard.html'}
...
Комментарии:
1. Похоже, это работает. Можно ли удалить
{' '}
часть вокруг ссылки? Спасибо за ответ, кстати!2. Нет проблем! Вы могли бы сделать что-то вроде
print(t['title'], t['link'].replace('{', '').replace('}', '')
. Это просто заменит любой экземпляр этих символов ничем.3. Спасибо за предложение, но оно выдает ошибку
AttributeError: 'set' object has no attribute 'replace'
. Я думал об использовании.strip()
, но не знал, как заставить его работать для того, что я хочу сделать.4. Ах, моя ошибка. Если вы сначала преобразуете ссылку в строку, а затем просто добавляете внутренние кавычки, она должна правильно форматировать вещи.
str(t['link']).replace("{'", "").replace("'}", "")
5. Спасибо, чувак, теперь все работает так, как задумано. Хорошего дня!