Python 有没有办法从HTML中获取字符串?

Python 有没有办法从HTML中获取字符串?,python,html,python-requests,Python,Html,Python Requests,我想要一种为osu生成文件名的方法!我正在下载的beatmaps。理想情况下,我会在HTML中查找某个短语,beatmapsets?q=,然后得到q=”后面的单词 我尝试过使用lxml.html,但是我对它没有什么经验,在下面的代码中,它返回一个空列表 类别地图: def generateFileNameself,num1=无: 如果不是num1: printMissing必需参数:“num1” 回来 dl=请求。getfhttps://bloodcat.com/osu/s/{num1.rstr

我想要一种为osu生成文件名的方法!我正在下载的beatmaps。理想情况下,我会在HTML中查找某个短语,beatmapsets?q=,然后得到q=”后面的单词

我尝试过使用lxml.html,但是我对它没有什么经验,在下面的代码中,它返回一个空列表

类别地图: def generateFileNameself,num1=无: 如果不是num1: printMissing必需参数:“num1” 回来 dl=请求。getfhttps://bloodcat.com/osu/s/{num1.rstrip} …生成最终名称 tree=fromstringdl.content FinalName=tree.xpath //a[contains@href='BeatMapset?q='] 返回最终名称 osu-osu地图 osu.generateFileName653534理想结果-653534熊猫眼-ILY 理想的结果是在评论,但我不知道从哪里开始。我所知道的只是我需要的两个关键字[作为歌曲名,伊利,和艺术家,熊猫眼]在HTML中显示为:

我还需要能够重新使用此代码,以便每次都能获取q=文本。

根据请求,requests.get.content返回原始字节响应。 您需要解析的是dl.text

还有@RomanPerekhrest指出,给定的链接指向一个二进制文件,因此用lxml解析它是没有意义的。但是,您可以使用requests.head方法获取文件名并提取所需的数据

请尝试以下操作:

dl = requests.head(f"https://bloodcat.com/osu/s/{num1.rstrip()}") 
fname = dl.headers["Content-Disposition"].split('filename="')[-1].split('";')[0].replace("%20", " ")

# fname == '653534 Panda Eyes - ILY.osz'

网址https://bloodcat.com/osu/s/653534 将提示下载文件653534 Panda Eyes-ly.osz-它不是html内容。lendl.text->9123471问题并非如此relevant@RomanPerekhrest如果它自动下载具有所需名称的文件,是否有办法保留原始文件名并避免整个generateFilename函数?如何使用requests.head?我不太明白。请看编辑后的答案。您只需要改进解析,我的有点脏。我已经完成了:dl=requests.headfhttps://bloodcat.com/osu/s/{num1.rstrip},然后是x=dl.headers.getContent-Disposition,然后是y=x.splitfilename=\[1].split.osz\;[0]。替换%20,返回yI只需在响应代码/内容或x上添加一个检查,以确保内容处置头存在,并且您应该可以继续。我还将确保所有其他百分比编码也已消失,哈哈!