首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网刮后如何分割行?

网刮后如何分割行?
EN

Stack Overflow用户
提问于 2022-05-17 15:25:54
回答 1查看 132关注 0票数 0

我现在有一个问题,这是一个我正在抓取的网站:https://tw.dictionary.search.yahoo.com/search;_ylt=AwrtXGvbWIJibWYAFCp9rolQ;_ylc=X1MDMTM1MTIwMDM4MQRfcgMyBGZyA3NmcARmcjIDc2ItdG9wBGdwcmlkAwRuX3JzbHQDMARuX3N1Z2cDMARvcmlnaW4DdHcuZGljdGlvbmFyeS5zZWFyY2gueWFob28uY29tBHBvcwMwBHBxc3RyAwRwcXN0cmwDMARxc3RybAM0BHF1ZXJ5A3RhcGUEdF9zdG1wAzE2NTI3MDk5NTM-?p=take&fr2=sb-top&fr=sfp,这是雅虎提供的一个网络词典,我想做的是当你输入你的翻译请求时,输出会显示结果。

代码语言:javascript
复制
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()

下面是我所写的内容,我的输出显示了如果您输入“you”:

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

我想看看是这样分开的

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

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

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

我试着用

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

但结果是一样的,但只有在开始和结束。

我不确定这是否是因为最初的web没有分割行。

这是原始页面代码的一部分:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 15:45:22

为了按照您想要的方式格式化文本,我必须这样做:

代码语言:javascript
复制
for div in divs:
    lis = div.find_all('li')
    for li in lis:
        print(li.text.replace('\n', ''))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72276747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档