Неполадки при печати с использованием BeautifulSoup и Selenium

Я немного новичок в программировании, но я пытался очистить некоторые веб-сайты, просто чтобы попрактиковаться, однако я всегда сталкиваюсь с этой проблемой. Код так прост, как показано ниже.


from bs4 import BeautifulSoup
from selenium import webdriver
import csv

url = 'https://www.reddit.com/r/soccer/'
driver = webdriver.Chrome()
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')

post_box = soup.find_all('div', attrs={'class': '_1poyrkZ7g36PawDueRza-J'})

for info in post_box:
    title = info.h3.get_text()
    print(title)

filename = 'reddit_soccer.csv'

f = open(filename, 'w')

headers = 'Title
'


f.write(headers + '
')

f.write(title + '
')

f.close()


Теперь, вот проблема, этот код дает мне вывод с заголовками каждого поста на первой странице URL. Но когда я пишу print (title) в моей IDE, он возвращает только одно сообщение, которое оказывается последним на странице. Я пытался понять, почему это происходит в течение нескольких часов, но я не мог найти причину. Разве это не должно печатать все названия? Если нет ... Как я должен записать этот вывод со всеми заголовками в CSV-файл?

Заранее спасибо и извините за возможные грамматические ошибки.

Всего 1 ответ


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

filename = 'reddit_soccer.csv'
with open(filename, 'w') as f:
    headers = 'Title'
    f.write(headers + '
')
    for info in post_box:
        title = info.h3.get_text()
        f.write(title + '
')

Есть идеи?

10000