Python请求API-无结果

时间:2018-11-05 22:07:59

标签: python python-requests

我试图通过向网站的搜索栏发送将我重定向到的URL的get请求来使用网站的“搜索栏”。

通过请求api,我从网站上获得“无结果”。但是,当我直接在网站上搜索时,确实会获得结果。我的代码生成的网址和网站将我重定向到的网址完全相同,但我的代码看到“没有结果”。

为什么会这样?有办法解决吗?

示例代码:

    url = "https://songbpm.com/{}?q={}".format("shape-of-you-ed-sheeran", "shape%20of%20you%20ed%20sheeran")
    r = requests.get(url,  auth=('user', 'pass'))
    while r.status_code!=200:
        time.sleep(1)

    lines = r.content.decode("utf-8").split("<div class=\"media-content\">")

n 在这种情况下,lines只是一个字符串,因为split()函数由于找不到匹配的字符串而无法拆分。仅在网站返回结果时才能找到字符串<div class=\"media-content\">

1 个答案:

答案 0 :(得分:1)

您是要写url = "https://songbpm.com/{}?q={}".format(song_name, artist)吗?我假设您有两个变量song_nameartist,您正尝试使用format()将其添加到URL。

您现在正在做的只是添加字符串"song_name""artist"而没有结果,因为不存在被“艺术家”称为“ song_name”的歌曲。

例如,以下代码:

import requests
import time

song_name = 'thunderstruck'
artist = 'acdc'
url = "https://songbpm.com/{}?q={}".format(song_name, artist)
r = requests.get(url,  auth=('user', 'pass'))

lines = r.content.decode("utf-8").split("<div class=\"media-content\">") 
print(len(lines))

打印6,表明如果删除song_nameartist周围的引号,它将按预期工作。