Запись в текстовый файл нескольких строк, только последняя строка сохраняет? - PullRequest
0 голосов
/ 03 мая 2020

Я знаю, что это повторяющийся вопрос, однако из всех ответов в Интернете я не смог найти решение, так как все бросали ошибку. Просто пытаюсь вычистить заголовки из Интернета и сохранить их в текстовый файл. Соскребающий код работает хорошо, однако он сохраняет только последнюю строку, минуя все заголовки до последней. Я пробовал зацикливание, помещая код написания перед очисткой, добавляя к списку et c, другой метод очистки, однако, у всех была та же самая проблема. пожалуйста помогите.

вот мой код

def nytscrap():
    from bs4 import BeautifulSoup
    import requests

url = "http://www.nytimes.com"

page = BeautifulSoup(requests.get(url).text, "lxml")

for headlines in page.find_all("h2"):
    print(headlines.text.strip())

filename = "NYTHeads.txt" 
with open(filename, 'w') as file_object:
        file_object.write(str(headlines.text.strip()))

'' '

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Каждый раз, когда ваш for l oop запускается, он перезаписывает переменную headlines, поэтому, когда вы приступаете к записи в файл, переменная headlines сохраняет только последний заголовок. Простым решением этого является включение for l oop в ваше заявление with, например:

with open(filename, 'w') as file_object:
    for headlines in page.find_all("h2"):
        print(headlines.text.strip())
        file_object.write(headlines.text.strip()+"\n") # write a newline after each headline
0 голосов
/ 03 мая 2020

здесь приведен полный рабочий код, исправленный в соответствии с рекомендациями.

    from bs4 import BeautifulSoup
import requests

def nytscrap():
    from bs4 import BeautifulSoup
    import requests

url = "http://www.nytimes.com"

page = BeautifulSoup(requests.get(url).text, "lxml")
filename = "NYTHeads.txt" 
with open(filename, 'w') as file_object:
    for headlines in page.find_all("h2"):
        print(headlines.text.strip())
        file_object.write(headlines.text.strip()+"\n")

этот код будет вызывать ошибку в работе Юпитера, но при открытии файла, однако при открытии файла вне заголовков Юпитера, сохраненных ...

...