Как спарсить атрибут target=_"_blank"> спомошью BeautifulSoup в Python?

Тренируюсь по изучению библиотеки BeautifulSoup в python и зациклился уже на вторые сутки над парсингом атрибута target=_"_blank">

Что хочу сделать:
Спарсить победителей со страници => https://randstuff.ru/vkwin/zrnzt6/
Мне нужна сылка на страницу (Готова) и ИМЯ ФАМИЛИЯ победителя помещенные в словарь.

Так выглядит класс, в моем случае их получается 5. Сылку вытащил и теперь нужно имя и фамилию, находится в target="_blank">
<a class="name" href="https://vk.com/stush---" target="_blank">Стю-- Серге---</a>


Перелазил уже весь интернет и код на гите, но решение так и не нашел. Подскажите как решить :)

Что уже имеем:
import requests
from bs4 import BeautifulSoup

URL = 'https://randstuff.ru/vkwin/zrnzt6/'
HEADERS = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.96 YaBrowser/20.4.0.3443 Yowser/2.5 Safari/537.36', 'accept': '*/*'}

def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('a', class_='name')[1:]
    vk = []
    for item in items:
        vk.append({
            'title': item.get('href'),
            #'name': item.select('a', 'target="_blank">').get_text ТУТ ДОЛЖЕН БЫЛ БЫТЬ ПАРСИНГ ИМЕНИ И ФАМИЛИИ 
        })
    print(vk)

def parse():
    html = get_html(URL)
    if html.status_code == 200:
        get_content(html.text)
    else:
        print('Error')

parse()
  • Вопрос задан
  • 359 просмотров
Решения вопроса 2
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Это:
#'name': item.select('a', 'target="_blank">').get_text ТУТ ДОЛЖЕН БЫЛ БЫТЬ ПАРСИНГ ИМЕНИ И ФАМИЛИИ

заменить на это:
'name': item.text
Output
[{'title': 'https://vk.com/stusha45', 'name': 'Стюша Сергеева'}, {'title': 'https://vk.com/id209266081', 'name': 'Юлия Сухова'}, {'title': 'https://vk.com/id394370251', 'name': 'Нина Ляшенко'}, {'title': 'https://vk.com/id473065083', 'name': 'Андрей Кротов'}, {'title': 'https://vk.com/id491175633', 'name': 'Тамара Петрова'}]
Ответ написан
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
soup.find_all('a', class_='name')[1:]
Тут уже возвращаются элементы целиком, со всеми атрибутами и текстом:
<a class="name" href="https://vk.com/stusha45" target="_blank">Стюша Сергеева</a>
<a class="name" href="https://vk.com/id209266081" target="_blank">Юлия Сухова</a>

Соответственно тебе не нужно повторно искать их, просто взять нужные значения из каждого элемента:
for item in items:
    item_data = {
        'title': item.get('href'),
        'name': item.text
    }
    print(item_data)

{'title': 'https://vk.com/stusha45', 'name': 'Стюша Сергеева'}
{'title': 'https://vk.com/id209266081', 'name': 'Юлия Сухова'}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы