如何在一个网页中抓取并排的两张桌子的数据?

2024-09-25 04:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在pythonBeautiflSoup中编写了一个脚本,使用.select()来解析一些html元素的表格数据。实际数据在两个表中。当我打开那个站点时,我可以看到两个表并排放置,就像you can see in this image。我用铅笔在第二张桌子上做了记号,让你知道实际上第二张桌子是靠在一起的。你知道吗

然而,当我执行下面的脚本时,我得到了一个接一个的输出。我怎样才能找到它们,就像它们在图像中是可见的,意味着并排的。你知道吗

我无法粘贴html元素,因为它们太大,无法放入下面的区域。但是,可以找到in this link。无法共享网站链接,因为需要登录才能访问数据。你知道吗

from bs4 import BeautifulSoup

htmldoc = """replace_with_above_elements"""

soup = BeautifulSoup(htmldoc,"lxml")
for items in soup.select("tbody.Table2__tbody tr"):
    data = [item.text for item in items.select("td")]
    print(data)

顺便说一句,这两张表的结构相似。你知道吗

电流输出:

['PG', 'Empty', '', '--', '']
['SG', 'Eric GordonHouSG', '', '@LAC', '7:00 AM']
['SF', 'Taurean PrinceAtlSF', '', '@Cle', '4:00 AM']
['PF', 'Empty', '', '--', '']
['C', 'Jusuf NurkicPorC', '', '--', '']
['UTIL', 'Paul GeorgeOKCSF', '', 'Sac', '5:00 AM']
['UTIL', 'Gary HarrisDenSG', '', 'GS', '6:00 AM']
['UTIL', "D'Angelo RussellBknPG, SG", '', '--', '']
['Bench', 'Damian LillardPorPG', '', '--', '']
['Bench', 'Devin BookerPhxSG', '', '--', '']
['Bench', 'Deandre AytonPhxC', '', '--', '']
['Bench', 'Mike ConleyMemPG', '', '--', '']
['Bench', 'Trevor ArizaPhxSF', '', '--', '']
['Bench', 'Serge IbakaTorPF', '', '--', '']
['IR', 'Isaiah ThomasODenPG', '', 'GS', '6:00 AM']
['--', '--/--', '--', '--/--', '--', '--', '--', '--', '--', '--', '--', '--', '--', '--', '--']
['30.5', '5.5/13.5', '.407', '3.0/3.0', '1.000', '1.0', '2.0', '1.0', '0.0', '1.0', '0.5', '15.0', '0.82', '53.1', '+5.0']
['27.5', '8.5/15.0', '.567', '4.0/4.0', '1.000', '3.5', '5.0', '4.5', '1.5', '0.0', '5.0', '24.5', '5.76', '49.2', '+10.8']
['--', '--/--', '--', '--/--', '--', '--', '--', '--', '--', '--', '--', '--', '--', '--', '--']
['20.0', '6.5/13.0', '.500', '1.0/1.0', '1.000', '0.0', '8.5', '1.0', '1.5', '0.5', '2.0', '14.0', '2.05', '78.6', '-5.1']
['37.5', '8.0/25.0', '.320', '4.0/5.5', '.727', '3.5', '5.0', '4.5', '3.0', '0.0', '4.0', '23.5', '1.80', '99.8', '-0.1']
['34.5', '6.5/15.5', '.419', '5.5/6.0', '.917', '0.5', '3.5', '3.0', '1.0', '0.5', '0.5', '19.0', '3.08', '76.4', '-5.5']
['30.0', '4.3/12.3', '.351', '1.3/1.7', '.800', '1.7', '4.3', '6.0', '0.7', '0.7', '3.0', '11.7', '2.43', '81.2', '-6.3']
['32.5', '9.0/18.0', '.500', '8.0/8.0', '1.000', '2.5', '4.0', '6.5', '0.5', '0.5', '1.5', '28.5', '8.47', '99.9', '0.0']
['34.5', '8.5/17.0', '.500', '9.5/11.5', '.826', '3.5', '3.0', '7.0', '0.5', '0.0', '4.5', '30.0', '4.30', '99.7', '+0.2']
['29.5', '5.0/9.0', '.556', '1.5/2.0', '.750', '0.0', '9.0', '3.5', '0.5', '0.5', '1.0', '11.5', '2.14', '98.4', '-0.2']
['27.0', '4.5/12.0', '.375', '2.5/3.0', '.833', '2.0', '3.0', '7.0', '0.5', '0.0', '0.5', '13.5', '2.09', '92.2', '-2.6']
['33.0', '4.5/9.5', '.474', '1.0/1.0', '1.000', '3.0', '5.5', '4.0', '0.5', '0.5', '1.5', '13.0', '3.31', '40.9', '+31.2']
['29.3', '5.3/11.3', '.471', '4.0/5.7', '.706', '0.7', '7.3', '1.0', '1.0', '1.7', '1.7', '15.3', '5.29', '36.0', '+2.4']
['--', '--/--', '--', '--/--', '--', '--', '--', '--', '--', '--', '--', '--', '--', '37.1', '-17.9']

预期输出在上述图像链接中可见。


Tags: 数据in图像脚本元素链接htmlutil
1条回答
网友
1楼 · 发布于 2024-09-25 04:26:47

您可以尝试处理以下两个表:

soup = BeautifulSoup(htmldoc,"lxml")

tables = soup.select("tbody.Table2__tbody")

for left, right in zip(tables[0].select("tr"), tables[1].select("tr")):
    data = [item.text for item in left.select("td")] + [item.text for item in right.select("td")]
    print(data)

相关问题 更多 >