@polmit

Во время создания .TXT файла всё записывается в одну строчку, как сделать что и «title» и «link» писались с новой строки? Просто «\n» не работает?

import requests
from bs4 import BeautifulSoup as bs

def parser():
    file = open("test.txt", "w")

    HOST = "https://www.avito.ru"
    max_pages = 9

    for x in range(1, max_pages + 1):
        page = requests.get("https://www.avito.ru/moskovskaya_oblast_krasnogorsk/igry_pristavki_i_programmy?p=" + str( x ) )

        soup = bs(page.content, "html.parser")

        buys = []
        items = soup.find_all("div", class_ = "snippet-horizontal")

        for item in items:
            buys.append({
                "title": item.find("a", class_= "snippet-link").get_text(strip=True),
                "link": HOST + item.find("a", class_="snippet-link").get("href"),
            })
            for i in buys:
                print(i["title"])
                print(i["link"])
                file.write(i["title"])
                file.write(i["link"])
    file.close()
parser()
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Эксперт по BeautifulSoup(но это не точно!)
У вас странная дичь записывалась в файл))
Попробуйте так:
import requests
from bs4 import BeautifulSoup as bs

def parser():
    file = open("test.txt", "w")

    HOST = "https://www.avito.ru"
    max_pages = 9

    for x in range(1, max_pages + 1):
        page = requests.get("https://www.avito.ru/moskovskaya_oblast_krasnogorsk/igry_pristavki_i_programmy?p=" + str( x ) )

        soup = bs(page.content, "html.parser")

        buys = []
        items = soup.find_all("div", class_ = "snippet-horizontal")

        for item in items:
        	title = item.find("a", class_= "snippet-link").get_text(strip=True)
        	link = item.find("a", class_="snippet-link").get("href")
        	print(f"{title} {HOST}{link}\n")
        	file.writelines(f"{title} {HOST}{link}\n")

    file.close()
parser()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы