Получить тег 'href' после текста, используя BeautifulSoup в python - PullRequest
0 голосов
/ 17 марта 2020

То, что я хочу получить, это 'href' с соответствующим текстом всякий раз, когда я ищу слово, имеющее ссылку href. В этом примере, если я ищу слово «over» из «div» ниже, мне нужно, чтобы оно отображало «over +« href ».

Sample of the html i used :
html '''
<div class="ez" style="" data-ft="&#123;&quot;tn&quot;:&quot;*s&quot;&#125;"> 
<span><p>This is the text here</p> <a href=" my link 3 ">More</a>
<div class="bl" style="" data-ft="&#123;&quot;tn&quot;:&quot;*s&quot;&#125;">
<span><p>Hello everybody over there</p><a href="my link 1></div><div 
class="ol"...><div class="bq qr"><a> class "gh" href="my link 2"</a>
'''html

enter code here 
    for text_href in soup.findAll('div'):
        word = text_href.text
        link = text_href['href']
        print(word '+' link)
for list in word:
    pattern =re.compile(r'over', re.I|re.UNICODE)
    matches = pattern.finditer(c)
        for match in matches:
            print(match) + print(link)

Таким образом, ожидаемый результат - выделить совпадение, в моем случае «оконченное», и ссылку (href), на которой находится совпадение. результат: более + «ссылка, которую я хочу получить» (это ссылка)

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

Я думаю, вы ищете что-то вроде этого:

for text_href in soup.findAll('div'):
    word = text_href.text
    if 'over' in word:
        print(text_href.a['href'])

Вывод:

 the link i want to obtain 
1 голос
/ 17 марта 2020

Вы можете использовать метод find_next , если ссылка всегда будет появляться после текста поиска.

Примерно так -

html_doc ='''
<div class="ez" style="" data-ft="&#123;&quot;tn&quot;:&quot;*s&quot;&#125;"> 
<span><p>This is the text over here</p> <a href="the link i want to obtain 
">More</a>
<div class="bl" style="" data-ft="&#123;&quot;tn&quot;:&quot;*s&quot;&#125;">
<span><p>Hello everybody</p> <a href="www.mylink...">More</a>
'''

from bs4 import BeautifulSoup
import re

soup = BeautifulSoup(html_doc, 'html.parser')

search_string = 'over'

print(search_string, '+', soup.find(string=re.compile(search_string, re.I)).find_next('a')['href']) # over + the link i want to obtain

Вы можете обновить соответственно, регулярное выражение, если вы ищете целые слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...