用BeautifulSoup从tbody中提取数据

2024-10-02 14:20:10 发布

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

我试图用BeautifulSoup从这个HTML中提取一些数据。我只想返回data-buyout="1 alchemy" data-ign="DanForeverr" data-league="Standard" data-name="Sulphur Wastes Map" data-seller="NoCocent" data-sellerid="None" data-tab="~price 1 alch" data-x="6" data-y="7"*`,但没有得到任何结果。我正在使用下面的代码。任何帮助都将不胜感激。在

parsed = soup.find_all('tbody', class=re.compile('^data-'))
^{pr2}$

Tags: 数据namemapdatahtmlstandardalchemyleague
3条回答

下面的组合解决了我的问题

parsed = soup.select("tbody[id*=item-container-]")
for i in parsed:
    print(i['data-buyout'])
    print(i['data-ign'])
    print(i['data-name'])
    print(i['id'])

您试图在tag类中查找标记属性,但这行不通。在

为什么不按身份证找呢?只需确保它包含0之前的子字符串。在

soup.select("tbody[id*=item-container-]")

你不能真的这么做,你可以从标签中提取特定的信息。在

定义您发布的x=html如下:x = '''<tbody class="item item-live-c324ceb98e25716a0fad0727e0cd64e3" data-buyout="1 alchemy" data-ign="DanForeverr" data-league="Standard" data-name="Sulphur Wastes Map" data-seller="NoCocent" data-sellerid="None" data-tab="~price 1 alch" data-x="6" data-y="7" id="item-container-0">'''

soup = BeautifulSoup(x,'lxml')

this_class = soup.findAll('tbody',{'class':'item item-live-c324ceb98e25716a0fad0727e0cd64e3'})
#This is used to pinpoint the exact tbody (you can do it your way),
# but it's useful because you give it the exacty key-value. (Mostly can't miss)

for i in this_class:
    print(i['data-buyout'])
    print(i['data-ign'])
    print(i['data-name'])
    print(i['id'])

您可以打印这些属性的每个值,但如果您使用soup.findAll或{},则不会只打印(一个分支,而且还会打印整个(子级)

相关问题 更多 >