我正在試圖在這種結構的網絡中進行刮取。正確選擇一個web元素通過python和selenium的xpath
<div>
<div class = 「class1」 >
<div class = 「class2」 >
<div class = 「class3」 >
<div style = 「clear: both; 」 >
</div>
<div>
<div class = 「class1」 >
<div class = 「class2」 >
<div class = 「class3」 >
<div style = 「clear: both; 」 >
</div>
<div>
<div class = 「class1」 >
<div class = 「class2」 >
<div class = 「class3」 >
<div style = 「clear: both; 」 >
</div>
在每個部分
有diferent信息。我想搜索class1中的一個特定單詞,如果這個單詞存在那麼我打印這些信息。此後我有問題。在我想獲得本節3級的信息之後。例如,如果我的第一部分的class1有「這個詞」,那麼我想在本節中獲得class3的信息。
我的代碼是這樣的:
cs1 = driver.find_elements_by_class_name("class1")
for i in cs1:
information = i.text
if "this word" in information:
print(information)
infclass3 = i.find_element_by_xpath('//following-sibling::div[@class = "class3"]')
print(infclass3.text)
問題是這樣的:我與「這個詞」 Class1的信息,但關於這一部分,我將不CLASS3的信息。每次總是在第一部分打印class3。例如,如果「這個詞」是在第二和第三部分我得到的是這樣的:
information of class1 - Section 2
information of class3 - Section 1
information of class1 - Section 3
information of class3 - Section 1
然後在該行的信息1和3是正確的。但在第2行和第4行不是,1.因爲是重複2.因爲在第1行中不是「這個單詞」
感謝您的幫助。
我希望你有一個愉快的一天:)
爲什麼循環,並沒有得到元素(一個或多個)需要直接:'driver.find_element(S)_by_xpath('// DIV [@類= 「1類」 和包含(文本() ,「this word」)] /../ div [@ class =「class3」]')' –
我不知道我在做什麼錯,但是當我運行你的代碼時 我什麼也沒有得到 – Alejo
也許你需要發佈更多你的HTML(至少如何用「這個詞」部分看起來像) –