2017-10-04 37 views
0

我想在html页面中找到选择器。我的大多数选择器都返回正确的结果,除了那些在它们中都有一个id和class的结果。美丽的汤无法找到其中有id和类的选择器

例子:

soup = BeautifulSoup(html, "html.parser") 
selectors_giving_incorrect_value = ["input#symbol input.btn-primary", 
            "input.stackbar input#symbol.stackbar", 
            "div div#logo.stackarea"] 

selectors_working_right = ["div", "div p"] 

for i in selectors_giving_incorrect_value: 
    soup.select(i)) 

输出始终空白:

[] 
[] 
[] 

要检查是否有来检查这些种既具有id和class在其中选择一个特殊的方式?

回答

0

尝试

soup.find_all("div",attrs={"class":"myClass","id":"myID"}) 

我也将承担soup.select("div#IDname.ClassName")作品如果使用选择,不能真正测试现在。

0

尝试解决此选择:

"input#symbol input.btn-primary"

它应该是:

"input.btn-primary input#symbol"

我知道它违反了原来的CSS选择器规则,但它似乎工作。当你重新排列id和class时 - 这个选择器不起作用。可能取决于您使用的解析器。

+0

input#symbol input.btn-primary指定有一个带有id = symbol的标签输入&它有一个class = btn primary的子标签输入。不会逆转订单找到不同的选择器? – Piyush

+0

是的,你是对的。但在实践中,我有另一种行为。在我的例子中,bs4创建了同时指定了id和class的标签。你有没有试过你的数据? –