2017-02-17 11 views
0

мне нужно, чтобы получить доступ к строке «Мой сайт», но это простое регулярное выражение не может соответствовать р тег:Python - BeautifulSoup может не совпадать тег с определенным текстом (с помощью re.compile)

data = """<p>Site: <a href="www.example.com" style="font-weight: 100;">My site</a></p>""" 
soup = BeautifulSoup(data, 'lxml') 
site = soup.find('p', text = re.compile('Site: ')) 
print site 
>> None 

Если я пытаюсь с:

data = """<p>Site: <a href="www.example.com" style="font-weight: 100;">My site</a></p>""" 
soup = BeautifulSoup(data, 'lxml') 
site = soup.findAll('p') 
print site 
>> [<p>Site: <a href="www.example.com" style="font-weight: 100;">My site</a></p>] 

он работает. Конечно, этот тег находится на странице с различными p-тегами, поэтому я не хочу обращаться к нему по индексу.

ответ

0

Вы можете перебрать все p тегов и увидеть, если каждый из них имеет 'Site' в нем:

for p in soup.findAll('p'): 
    if(re.match('(Site)', p.text): 
     print (p.text) # Site: My site