Неполадки при печати с использованием BeautifulSoup и Selenium - PullRequest
0 голосов
/ 09 февраля 2020

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


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\n'


f.write(headers + '\n')

f.write(title + '\n')

f.close()


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

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

1 Ответ

2 голосов
/ 09 февраля 2020

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

filename = 'reddit_soccer.csv'
with open(filename, 'w') as f:
    headers = 'Title'
    f.write(headers + '\n')
    for info in post_box:
        title = info.h3.get_text()
        f.write(title + '\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...