Сохранение результата парсинга в txt файл

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2023

Не совсем понимаю как записать результат парсинга сайта https://myshows.me/news/ в формат txt. Я ищу заголовки с такой формулировкой: "Что посмотреть на этой неделе? Премьеры сериалов" и вывожу их принтом. А мне нужно записать все эти заголовки, которые нашлись на сайте, в файлик.

Сам код:

import requests
from bs4 import BeautifulSoup

headers = {
    'accept': '*/*',
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}

for page_num in range(0, 212):
    URL = f'https://myshows.me/news/?page={page_num}'
    req = requests.get(URL, headers=headers)
    src = req.text
    soup = BeautifulSoup(src, 'lxml')
    all_products_hrefs = soup.find_all(class_='NewsItem-title')

    for item in all_products_hrefs:
        item_text = item.text 
        item_href = 'https://myshows.me/news/' + item.get('href')
        if 'Премьеры сериалов' in item_text:
            print(f'{item_text} {item_href}')
        else:
            pass

with open('spisok.txt', 'w', encoding="utf-8") as file:
    file.write(src)

Код как бы проходит, а в файлик ничего не записывается, ошибок не возвращает.

Ответы

▲ 1

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

import requests
from bs4 import BeautifulSoup

headers = {
    'accept': '*/*',
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}

file = open('spisok.txt', 'w', encoding="utf-8")

for page_num in range(0, 212):
    URL = f'https://myshows.me/news/?page={page_num}'
    req = requests.get(URL, headers=headers)
    src = req.text
    soup = BeautifulSoup(src, 'lxml')
    all_products_hrefs = soup.find_all(class_='NewsItem-title')
    
    for item in all_products_hrefs:
        item_text = item.text 
        item_href = 'https://myshows.me/news/' + item.get('href')
        if 'Премьеры сериалов' in item_text:
            print(f'{item_text} {item_href}')
            file.write(f'{item_text} {item_href}\n')
        else:
            pass