2016-03-19 4 views
1

Я использую питон селен, чтобы захватить исходный код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/, которые не содержат ссылок на мои ключевые слова, которые я не хочу.

Я новичок в python и selenium, но мне нравится вызов. Заранее спасибо за вашу помощь.

ответ

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

Смежные вопросы