Если вы хотите искать слово в тексте, вам следует использовать
import re
soup.findAll(string=re.compile('data'))
, но он находит строки (NavigableString
), а не теги, поэтому вам, возможно, придется получить их родительские для поиска атрибутов, таких как href
import requests
from bs4 import BeautifulSoup, NavigableString
import re
start_urls = 'https://en.wikipedia.org/wiki/Data_science'
r = requests.get(start_urls)
soup = BeautifulSoup(r.content, 'html.parser')
crawled_page =[]
for page in soup.findAll(string=re.compile('data')):
#print(isinstance(page, NavigableString))
#print(page.parent)
href = page.parent.get('href')
if href: # skip None
crawled_page.append(href)
print(crawled_page)
РЕДАКТИРОВАТЬ: аналогично lxml
с использованием xpath
import requests
import lxml.html
import re
start_urls = 'https://en.wikipedia.org/wiki/Data_science'
r = requests.get(start_urls)
soup = lxml.html.fromstring(r.content)
crawled_page =[]
for page in soup.xpath('//*[contains(text(), "data")]'):
href = page.attrib.get('href')
if href: # skip None
crawled_page.append(href)
print(crawled_page)