How to split lines after web scraping?

I'm now having a problem, this is the website i'm scraping : https://tw.dictionary.search.yahoo.com/search;_ylt=AwrtXGvbWIJibWYAFCp9rolQ;_ylc=X1MDMTM1MTIwMDM4MQRfcgMyBGZyA3NmcARmcjIDc2ItdG9wBGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuZGljdGlvbmFyeS5zZWFyY2gueWFob28uY29tBHBvcwMwBHBxc3RyAwRwcXN0cmwDMARxc3RybAM0BHF1ZXJ5A3RhcGUEdF9zdG1wAzE2NTI3MDk5NTM-?p=take&fr2=sb-top&fr=sfp , it's a web dictionary provided by Yahoo, what I am trying to do is when you input your request to translate and the output will show the results.

import requests
from bs4 import BeautifulSoup

def searchdic():
  global d
  a = "https://tw.dictionary.search.yahoo.com/search;_ylt=AwrtXGvbWIJibWYAFCp9rolQ"
  b = ";_ylc=X1MDMTM1MTIwMDM4MQRfcgMyBGZyA3NmcARmcjIDc2ItdG9wBGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuZGljdGlvbmFyeS5zZWFyY2gueWFob28uY29tBHBvcwMwBHBxc3RyAwRwcXN0cmwDMARxc3RybAM0BHF1ZXJ5A3RhcGUEdF9zdG1wAzE2NTI3MDk5NTM-?"
  c = "p="
  e = "&fr2=sb-top&fr=sfp"
  search = a+b+c+d+e
  print(search)

  resp = requests.get(search)
  soup = BeautifulSoup(resp.text, 'html.parser')
  #print(soup.find('','compList mb-25 p-rel'))
  
  if soup.find('','compList mb-25 p-rel') == None:
    print("Invalid query!")
  else:  
    print(soup.find('div','compList mb-25 p-rel').text)
    #divs = soup.find_all('div', 'compList mb-25 p-rel')
    #for div in divs:
      #print(f"{[s for s in div.stripped_strings]}""\n") 

def changechinesetourl():
  global d
  from urllib import parse
  str = d
  d = parse.quote(str)
  searchdic()

def is_contains_chinese():
    global d
    for _char in d:
        if '\u4e00' <= _char <= '\u9fa5':
            return True
    return False

d = input("What do you want to translate: ")
is_contains_chinese()

if True:
  changechinesetourl()
else:
  searchdic()

Here's what i have written, and my output shows like if you type "take":

vt. 拿,取;握,抱;拿走,取走;奪取,佔領;抓,捕;吸引 vi. (染料)被吸收,染上;依法獲得財產 n. 一次拍攝的電影(電視)鏡頭[C];捕獲量;收穫量;收入[S1]

and i wanted to see is separated like this:

vt. 拿,取;握,抱;拿走,取走;奪取,佔領;抓,捕;吸引

vi. (染料)被吸收,染上;依法獲得財產

n. 一次拍攝的電影(電視)鏡頭[C];捕獲量;收穫量;收入[S1]

I've tried to use

#divs = soup.find_all('div', 'compList mb-25 p-rel')
    #for div in divs:
      #print(f"{[s for s in div.stripped_strings]}""\n") 

but the results is the same but only with [ at the beginning and ] at the ending.

I'm not sure if it is because the original web html didn't split lines.

this is a part of the original page code:

<div class="compList mb-25 p-rel" ><ul ><li class="lh-22 mh-22 mt-12 mb-12 mr-25"><div class=" pos_button fz-14 fl-l mr-12">vt.</div> <div class=" fz-16 fl-l dictionaryExplanation">拿,取;握,抱;拿走,取走;奪取,佔領;抓,捕;吸引</div> </li><li class="lh-22 mh-22 mt-12 mb-12 mr-25"><div class=" pos_button fz-14 fl-l mr-12">vi.</div> <div class=" fz-16 fl-l dictionaryExplanation">(染料)被吸收,染上;依法獲得財產</div> </li><li class="lh-22 mh-22 mt-12 mb-12 mr-25 last"><div class=" pos_button fz-14 fl-l mr-12">n.</div> <div class=" fz-16 fl-l dictionaryExplanation">一次拍攝的電影(電視)鏡頭[C];捕獲量;收穫量;收入[S1]</div>
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы отформатировать этот текст так, как вы хотите, мне пришлось сделать это:

for div in divs:
    lis = div.find_all('li')
    for li in lis:
        print(li.text.replace('\n', ''))

Спасибо, это работает так, как я надеюсь!

Ricky Kuo 17.05.2022 18:07

Другие вопросы по теме