Фильтрация текста и ссылок
Нужно получить href и текст из тэга "a" с помощью beautifulsoup
Не знаю как переделать этот код под эту задачу:
def main(speed):
global cycle, url, response, soup
while True:
sleep(int(speed))
url = 'https://freelance.habr.com/tasks?q=python'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
print("<>" * 27)
#Этот цикл фильтрует всё кроме сылок на объявления
for a in soup.find_all('a', href=True):
if "/tasks/" in a['href']:
print("Found the URL:", "https://freelance.habr.com" + a['href'] + "|===")
a.decompose()
print(a)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Заметил, что у тех ссылок на объявления класс task__title, тогда можно пройтись по ним и вытащить ссылки.
А чтобы не составлять вручную абсолютную ссылку использовать urljoin
from urllib.parse import urljoin
import requests
from bs4 import BeautifulSoup
rs = requests.get('https://freelance.habr.com/tasks?q=python')
root = BeautifulSoup(rs.content, 'html.parser')
urls = [
(urljoin(rs.url, a['href']), a.get_text(strip=True))
for a in root.select('.task__title > a[href]')
]
print(len(urls), urls)
# 25 [('https://freelance.habr.com/tasks/349695', 'Парсер'), ..., 'Доработка бота Telegram на Python')]