2016-03-19 79 views
1

我使用python的硒捕捉程序源代碼Python的SeleniumExtract包含的HREF特定字符串

elem = browser.find_element_by_xpath("//*") 
source_code = elem.get_attribute("outerHTML") 

我需要從包含像關鍵字的源代碼中提取元素 - 果醬,蜂蜜,巧克力和打印到文件命名recipes.txt例如

/items/John-string-jam-string.html

這些是在href值的格式的例子

<a href="/items/John-string-jam-string.html" 
<a href="/items/Paul-string-string-jam-string.html" 
<a href="/items/string-Mary-honey-string.html" 
<a href="/items/choc-string-string.html" 

還有許多其他<a href =/items/不包含我不想要的關鍵詞。

我是新來的蟒蛇和硒,但我很享受挑戰。在此先感謝您的幫助。

回答

1

有多種方法可以解決它。舉例來說,使用XPath定位和contains()

links = browser.find_elements_by_xpath("//a[contains(@href, 'jam') or contains(@href, 'honey') or contains(@href, 'choc')]") 

或者,用CSS選擇器和*=符號:

links = browser.find_elements_by_css_selector("a[href*=jam],a[href*=honey],a[href*=choc]") 

如果你不想 「硬編碼」 的搜索詞值在表達式中,你可以動態地構建你的定位器:

words = ["jam", "honey", "choc"] 
condition = " or ".join("contains(@href, '%s')" % word for word in words) 
links = browser.find_elements_by_xpath("//a[%s]" % condition) 

要提取/打印出實際href屬性值,使用.get_attribute()

for link in links: 
    print(link.get_attribute("href")) 
+0

第一個建議是正是我所期待的。謝謝。 – Newbe

相關問題