2017-10-04 31 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的標籤。你有沒有試過你的數據? –