包含特定字符串的Python SeleniumExtract href

时间:2016-03-19 12:20:15

标签: python selenium

我正在使用python selenium来捕获源代码

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

我需要从包含关键字的源代码中提取元素 - 如jam,honey,choc和print到名为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 个答案:

答案 0 :(得分:2)

有多种方法可以解决它。例如,使用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"))