美丽的汤无法找到有id和class的选择器

时间:2017-10-04 06:23:39

标签: python web-scraping beautifulsoup

我正在尝试在html页面中找到一个选择器。我的大多数选择器都返回正确的结果,除了那些都有id和class的结果。

示例:

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的选择器?

2 个答案:

答案 0 :(得分:0)

尝试

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

如果使用选择器,我也会认为soup.select("div#IDname.ClassName")有效,现在无法真正测试。

答案 1 :(得分:0)

尝试更正此选择器:

"input#symbol input.btn-primary"

应该是:

"input.btn-primary input#symbol"

我知道它违反了原始的css选择器规则,但似乎有效。当您重新排序id和类时 - 此选择器将不起作用。可能它取决于您使用的解析器。