Не удается получить атрибут значения href, даже если он отображается при печати всего словаря - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь очистить ссылки с веб-сайта с помощью следующего кода:

from bs4 import BeautifulSoup
import requests

def get_links(url):
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')

    link = soup.find('a', class_="eds-media-card-content__action-link")
    print("Link attributes:", link.attrs)
    for k, v in link.attrs.items():
            print(k, v)

    print("Link: ", link.attrs['href'])

get_links("https://www.eventbrite.com/d/online/all-events/?page=1")

Вывод следующего кода:

Link attributes: {'tabindex': '-1', 'href': 'https://www.eventbrite.com/e/livestream-jon-kabat-zinn-cultivating-mindfulness-at-this-critical-time-tickets-101254729622?aff=ebdssbonlinesearch', 'class': ['eds-media-card-content__action-link'], 'aria-label': 'See more of Livestream Jon Kabat-Zinn: Cultivating Mindfulness at this Critical Time'}
tabindex -1
href 
class ['eds-media-card-content__action-link']
aria-label See more of Livestream Jon Kabat-Zinn: Cultivating Mindfulness at this Critical Time
Link:  

Как видно Атрибут href не пуст в вышеприведенном словаре, но когда я пытаюсь получить к нему доступ, возвращается пустая строка. Что я делаю не так?

Редактировать: проблема была решена (частично). Я запускал его на ноутбуке jupyter на своем p c, и ссылка не отображалась. Но когда я помещаю его в файл .py и запускаю, отображается ссылка. Все еще не знаю причину такого поведения ноутбука Jupyter.

1 Ответ

0 голосов
/ 07 апреля 2020

Вот код. Чтобы получить значение href, просто используйте

link['href'] или link.get('href') или link.attrs.get('href')

from bs4 import BeautifulSoup
import requests

def get_links(url):
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')

    link = soup.find('a', class_="eds-media-card-content__action-link")
    print("Link: ", link['href'])

get_links("https://www.eventbrite.com/d/online/all-events/?page=1")

снимок:

enter image description here

...