2016-07-07 2 views
0

У меня есть эта ссылка:BeautifulSoup найти ссылку, которая содержит определенное слово

<a href="/location/santa-clara/3fce50c4f3f9793d2f503fc145585090">Santa Clara, California</a>

Как я могу использовать BeautifulSoup найти конкретно эту ссылку, которая включает в себя слово местоположения «местоположение»?

ответ

7

Вы можете сделать это с помощью простого "contains" CSS selector:

soup.select("a[href*=location]") 

Или, если нужно сопоставить только одну ссылку, используйте select_one():

soup.select_one("a[href*=location]") 

И, конечно же, есть много других способами - например, вы можете использовать find_all() с аргументом href, который может иметь значение regular expression или function:

import re 

soup.find_all("a", href=re.compile("location")) 
soup.find_all("a", href=lambda href: href and "location" in href) 
+0

спасибо! это сработало. Я буду отмечать это как ответ, когда это позволит мне. –

+0

re.compile() принимает «местоположение» и превращает его в регулярное выражение? в основном просто абстрагироваться от необходимости править самим регулярным выражением? –

+0

@MorganAllen отмечает, что строка «location» также является допустимым регулярным выражением. В этом случае 'BeautifulSoup' будет просто соответствовать значениям' href', где есть подстрока 'location'. Рад быть полезным. – alecxe

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