Получение ошибки в методе python requests.get ()

import string
import requests
from bs4 import BeautifulSoup

song_name = input('enter song name : ')
url = 'https://search.azlyrics.com/search.php?q='  + (string.capwords(song_name)).replace(' ', '+')
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')

for a in soup.find_all('a'):
    href = a.get('href')
    if href.find('https') != -1:
        if href.find('lyrics/') != -1:
            print(href)
            res = requests.get(href)
            break

Когда я передаю аргумент href в requests.get(href), он выдает ошибку. в то время как, когда я передаю постоянную строку, например, res = requests.get('https://google.co.in'), она не вызывает никаких ошибок.

Я проверил, что тип обеих переменных одинаков

print(type(href))
<class 'str'>

print(type('https://google.co.in'))
<class 'str'>

Оба они одного типа, тогда почему я получаю сообщение об ошибке.

Вход:введите название песни: план бога

я использую python3.5

naveen prajapati 04.04.2018 23:02

Какое сообщение об ошибке отображается?

Ajax1234 04.04.2018 23:04

Также обратите внимание, что soup.find_all('a') собирает ссылку каждый на сайте, которая, вероятно, будет включать абсолютные пути для маршрутизации, что не будет работать с requests.get, поскольку имя сайта не указано.

Ajax1234 04.04.2018 23:06

@ Ajax1234 Спасибо, я нашел причину, по которой у меня появляется ошибка.

naveen prajapati 04.04.2018 23:28

Приведенный ниже ответ от @ "Touch My Boom Boom" верен

Tyler Cowan 04.04.2018 23:33

@TylerCowan Я решил эту проблему, не добавляя http, https или www в начале базового URL.

naveen prajapati 04.04.2018 23:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
462
1

Ответы 1

Ваш href, вероятно, не является полностью определенным URL-адресом.

Вы можете проверить, начинается ли ваш href с «http» или «www».

Если нет, то, вероятно, это либо форма #foo, либо foo/bar.html, и в этом случае вы можете просто добавить его в конец URL-адреса текущей страницы.

Помогает кому-то на StackOverflow (Божий план начинает играть)

touch my body 04.04.2018 23:10

<a class = "btn btn-share" href = "?q=%22god%27s+Plan%22&amp;w=songs&amp;p=1"> Дополнительные результаты песни </a> есть в вашем списке, и когда я печатаю href над операторами if делает это до ошибки

Tyler Cowan 04.04.2018 23:12

вы должны учесть это в своей логике и добавить к базовому URL-адресу

Tyler Cowan 04.04.2018 23:13

Другие вопросы по теме