我试图通过向网站的搜索栏发送将我重定向到的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\">
。
答案 0 :(得分:1)
您是要写url = "https://songbpm.com/{}?q={}".format(song_name, artist)
吗?我假设您有两个变量song_name
和artist
,您正尝试使用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_name
和artist
周围的引号,它将按预期工作。