将html请求中的特定行提取到variab中

2024-09-29 22:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做的是:

  • 创建GET请求以加载HTML源代码

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

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

例如,使用WWE页面:

来源:查看来源:http://network.wwe.com/video/v2525697583?contextType=wwe-show&contextId=wwe_nxt_uk&contentId=300687284&watchlistAltButtonContext=series

我想提取包含这个字符串的行

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

代码:

def extract(url):
    html = requests.get(url)
    text = html.text
    word = None
    for line in text:
        if 'http://thumbs.media.net.wwe.com/wwe/' in line:
            word = line
    return word

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

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


Tags: 字符串textcomnonehttpurlnet源代码
1条回答
网友
1楼 · 发布于 2024-09-29 22:19:41

这应该起作用:

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/'))

或者使用regex更好:

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/'))

相关问题 更多 >

    热门问题