如何选择两个td并用bs4作为单行输出?

问题描述 投票:0回答:1

我想获取一些数据,但我很难选择两个

td
并将输出放在它们所属的同一行。

HTML 示例:

<tr>
<td class ='verseNumCell'>
፳
</td>
<td class ='verseConentCell'>
ወትቤሎን ኢትስምያኒ ኖሔሚን ስምያኒ መራር እስመ መረርኩ ፈድፋደ ወብዙኀ ።
</td>
</tr>
<tr>
<td class ='verseNumCell'>
፳፩
</td>
<td class ='verseConentCell'>
አንሰ ምልእትየ ሖርኩ ወዕራቅየ አግብአኒ <span class='divineWord'>እግዚአብሔር</span> ለምንት ትብላኒ ኖሔሚን እንዘ <span class='divineWord'>እግዚአብሔር</span> አኅሰረኒ ወፈድፋደ አሕመመኒ ።
</td>
</tr>
<tr>

我做了什么:

import bs4
import requests
import re

url = "https://www.ethiopicbible.com/books/%E1%8A%A6%E1%88%AA%E1%89%B5-%E1%8B%98%E1%8D%8D%E1%8C%A5%E1%88%A8%E1%89%B5-1"
parameters = {}
response = requests.get(url, params=parameters)
soup = bs4.BeautifulSoup(response.text, "html.parser")
element_list = soup.find("div", class_="geezBibleChapterContainer").find_all("td")

for element in element_list:
    text = element.get_text()
    text = os.linesep.join([s for s in text.splitlines() if s])
    if not re.match(r'^\s*$', text):
        print(text)

我的输出:

፳
ወትቤሎን ኢትስምያኒ ኖሔሚን ስምያኒ መራር እስመ መረርኩ ፈድፋደ ወብዙኀ ።
፳፩
አንሰ ምልእትየ ሖርኩ ወዕራቅየ አግብአኒ እግዚአብሔር</span> ለምንት ትብላኒ ኖሔሚን እንዘ

我想得到什么:

፳ ወትቤሎን ኢትስምያኒ ኖሔሚን ስምያኒ መራር እስመ መረርኩ ፈድፋደ ወብዙኀ ።
፳፩ አንሰ ምልእትየ ሖርኩ ወዕራቅየ አግብአኒ እግዚአብሔር</span> ለምንት ትብላኒ ኖሔሚን እንዘ

我应该在单独的“汤”中选择 td 吗?

python-3.x web-scraping beautifulsoup
1个回答
1
投票

无需选择单元格,只需选择每一行并使用

get_text(separator=' ',strip=True)
:

for row in soup.select('div.geezBibleChapterContainer tr'):
    print(row.get_text(' ',strip=True))

什么导致:

፩ በቀዳሚ ገብረ እግዚአብሔር ሰማየ ወምድረ ።
፪ ወምድርሰ ኢታስተርኢ ወኢኮነት ድሉተ ወጽልመት መልዕልተ ቀላይ ወመንፈሰ እግዚአብሔር ይጼልል መልዕልተ ማይ ።
፫ ወይቤ እግዚአብሔር ለይኩን ብርሃን ወኮነ ብርሃን ።
፬ ወርእዮ እግዚአብሔር ለብርሃን ከመ ሠናይ ወፈለጠ እግዚአብሔር ማእከለ ብርሃን ወማእከለ ጽልመት ።
፭ ወሰመዮ እግዚአብሔር ለብርሃን ዕለተ ወለጽልመት ሌሊተ ወኮነ ሌሊተ ወጸብሐ ወኮነ መዓልተ ፩ ።
፮ ወይቤ እግዚአብሔር ለይኩን ጠፈር ማእከለ ማይ ከመ ይፍልጥ ማእከለ ማይ ወኮነ ከማሁ ።
፯ ወገብረ እግዚአብሔር ጠፈረ ወፈለጠ እግዚአብሔር ማእከለ ማይ ዘታሕተ ጠፈር ወማእከለ ማይ ዘመልዕልተ ጠፈር ።
፰ ወሰመዮ እግዚአብሔር ለውእቱ ጠፈር ሰማየ ወርእየ እግዚአብሔር ከመ ሠናይ ወኮነ ሌሊተ ወጸብሐ ወኮነ ካልእተ ዕለተ ።
示例
import requests
import bs4

url = "https://www.ethiopicbible.com/books/%E1%8A%A6%E1%88%AA%E1%89%B5-%E1%8B%98%E1%8D%8D%E1%8C%A5%E1%88%A8%E1%89%B5-1"
parameters = {}
response = requests.get(url, params=parameters)
soup = bs4.BeautifulSoup(response.text, "html.parser")

for row in soup.select('div.geezBibleChapterContainer tr'):
    print(row.get_text(separator=' ',strip=True))
© www.soinside.com 2019 - 2024. All rights reserved.