Python 将html请求中的特定行提取到变量中

Python 将html请求中的特定行提取到变量中,python,web-scraping,Python,Web Scraping,以下是我想做的: 创建GET请求以加载HTML源 搜索源以查找字符串,如果找到字符串,则将整行提取到变量中 我到处都在寻找如何做到这一点,但人们只解释如何提取整个源代码或使用字典 例如,使用WWE页面: 来源:查看来源: 我想提取包含此字符串的行 http://thumbs.media.net.wwe.com/wwe/ 代码: 当我执行该功能时,程序将返回None作为第一个指定值 注意:我只需要第一个匹配项,而不是变量中的每一个其他匹配项 def extract(url): res

以下是我想做的:

  • 创建GET请求以加载HTML源

  • 搜索源以查找字符串,如果找到字符串,则将整行提取到变量中

我到处都在寻找如何做到这一点,但人们只解释如何提取整个源代码或使用字典

例如,使用WWE页面:

来源:查看来源:

我想提取包含此字符串的行

http://thumbs.media.net.wwe.com/wwe/
代码:

当我执行该功能时,程序将返回None作为第一个指定值

注意:我只需要第一个匹配项,而不是变量中的每一个其他匹配项

def extract(url):
    response = requests.get(url)
    searchstr = 'http://thumbs.media.net.wwe.com/wwe/' 
    for line in response.text.split("\n"):
        if searchstr in line:
            return line
    return None
或简称:

def extract(url, searchstr):
    return next((line for line in requests.get(url).text.split("\n") if searchstr in line), None)

print(extract('http://www.url.com', 'http://thumbs.media.net.wwe.com/wwe/'))
或者更好的方法是:


那么,这段代码有什么问题吗?一旦找到要查找的子字符串,立即提前更新代码。在
word=line
之后添加一个
break
语句,如果
缩进,只需在
缩进中添加一个返回就可以了。您是否进行过任何调试?请尝试打印
,以确保子字符串实际出现。您好,感谢您的回复。但是,它给了我AttributeError:“Response”对象没有属性“split”。第二个方法工作,但它返回包含字符串的整个行列表,我只需要第一个。对不起,第一个方法中缺少一个
。text
,已修复。但是,您确定第二个方法吗?这对我来说非常有效?是的,它仍然在打印所有的匹配,我只需要一个
def extract(url, searchstr):
    return next((line for line in requests.get(url).text.split("\n") if searchstr in line), None)

print(extract('http://www.url.com', 'http://thumbs.media.net.wwe.com/wwe/'))
def extract(url, searchstr):
    match = re.search(rf"^(.*{searchstr}.*)$", requests.get(url).text, re.MULTILINE)
    return match.group(1) if match else None

print(extract('http://www.url.com', 'http://thumbs.media.net.wwe.com/wwe/'))