如何在所有ID具有不同值的地方刮掉所有<li id =“”>?

时间:2018-10-20 18:11:07

标签: python beautifulsoup

因此,我已经尝试了几个小时来打印出所有<li id =List-commodity>,其中每个li都包含自己的数据。

HTML:

enter image description here

我从打印开始

li_tags = bs4.find_all('ul', {'id': 'commodity-lister-list'})

这给了我整个列表,这很好。之后,我尝试

different_ids = li_tags.find_all('li')

print(different_ids)

但是给我一个空值([])。

我在做错什么,如何才能将所有内容打印出来,以后再在for循环中应用?

2 个答案:

答案 0 :(得分:2)

使用select

li_tags = bs4.select('ul[id=commodity-lister-list] li[id^=list-commodity-]')

答案 1 :(得分:1)

您可以使用re.compile来匹配id中出现的数字:

import re
li_tags = bs4.find('ul', {'id': 'commodity-lister-list'}).find_all('li', {'id':re.compile('list\-commodity-\d+')})

请注意,HTML id是唯一的,因此,您可以使用bs4.find而不是bs4.find_all