如何获得具有类名的div中的第一个ul

时间:2017-10-23 14:35:38

标签: python web-scraping beautifulsoup

如何让ul内的div具有班级名称制作者。我尝试了这个,但它发出错误'list' object has no attribute 'find_all'

这就是我的尝试:

div = base_category_soup.select("div.makers")
print div.find_all("ul")

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

首先,发现find_all不能与select的结果一起使用

您可以检查结果的类型以了解它

并且,在这种情况下,我将使用find或find_all来查找目标

试试吧

target = base_category_soup.find('div',class_='markers').find('ul')

它必须是"在第一个div中的第一个ul,它的类是标记"

答案 1 :(得分:0)

基本上,错误会告诉您所有需要知道的事情。由于div是一个列表,你需要取消引用它,例如:

div[0].find_all("ul")

如果第一个div元素是你想要的元素,或者只有一个元素。

答案 2 :(得分:0)

您可以使用nth-of-type CSS伪类(由BeautifulSoup支持):

ul = base_category_soup.select('div.makers ul:nth-of-type(1)')

或者,一个简单的Python项getter:

ul = base_category_soup.select('div.makers ul')[0]

请注意,这两项内容都会让您第一个ul来自实际包含div.makers元素的第一个ul ,而div[0].find_all('ul')如果第一个div不包含任何ul s。

,则会失败