首页 > 解决方案 > 将每次迭代保存在新行中

问题描述

朋友们!我有以下代码:

   import requests
   from bs4 import BeautifulSoup

  # 1 - Importar a página (html):

  início_url = 'https://www.conjugacao.com.br'
  final_url = ["/verbo-ir","/verbo-ser"]
  
  # 2 - Requisição:

  nome_verbos = []

  for final_url in final_url:

  url = início_url + final_url
  página = requests.get(url)
  soup = BeautifulSoup(página.text, 'lxml')

  for verbos_nomes in soup.find_all('h1', class_='nmt'):
      nome_verbos.append(verbos_nomes.text)

  for items in soup.find_all('span', class_='f irregular'):
      nome_verbos.append(items.text)

  for items in soup.find_all('span', class_='f'):
      nome_verbos.append(items.text)
   
  # 3 Salvar resultados:

  with open('verbos.txt', 'w') as f:
      for line in nome_verbos:
          f.write(line.upper())
          f.write(',')

这段代码的输出如下:

   output:  VERBO IR,VOU,VAIS,VAI,VAMOS,IDES,VÃO, VERBO SER,SOU,ÉS,É,SOMOS,SOIS,SÃO  

我唯一需要的是找出如何保存这个结果,如下所示:

   expected_output: 

   VERBO IR -> VOU, VAIS,VAI,VAMOS,IDES,VÃO
   VERBO SER -> SOU,ÉS,É,SOMOS,SOIS,SÃO

请问有什么想法吗?

标签: loopsfor-loopbeautifulsoupsaveiteration

解决方案


import requests
from bs4 import BeautifulSoup

patterns = [
    'ir',
    'ser'
]


def main(url):
    with requests.Session() as req:
        for pat in patterns:
            r = req.get(url.format(pat))
            soup = BeautifulSoup(r.text, 'lxml')
            name = soup.select_one('.nmt').text
            goal = [x.text for x in soup.select('.f, .irregular')]
            print(f"{name} --> {', '.join(goal)}")


main('https://www.conjugacao.com.br/verbo-{}')

输出:


Verbo Ir --> vou, vais, vai, vamos, ides, vão, fui, foste, foi, fomos, fostes, foram, fora, foras, fora, fôramos, fôreis, foram, fosse, fosses, fosse, fôssemos, fôsseis, fossem, vá, vás, vá, vamos, vades, vão, for, fores, for, formos, fordes, forem, vai, vá, vamos, ide, vão, vás, vá, vamos, vades, vão
Verbo Ser --> sou, és, é, somos, sois, são, era, eras, era, éramos, éreis, eram, fui, foste, foi, fomos, fostes, foram, fora, foras, fora, fôramos, fôreis, foram, fosse, fosses, fosse, fôssemos, fôsseis, fossem, seja, sejas, seja, sejamos, sejais, sejam, for, fores, for, formos, fordes, forem, sê, seja, sejamos, sede, sejam, sejas, seja, sejamos, sejais, sejam

推荐阅读