python - 从 html 请求中提取特定行到变量中
问题描述
这是我正在尝试做的事情:
创建一个 GET 请求以加载 HTML 源
搜索源以查找字符串,如果找到字符串,则将整行提取到变量中
我到处搜索以了解如何做到这一点,但人们只解释如何提取整个源或使用字典。
例如,使用 WWE 页面:
我想提取包含此字符串的行
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 作为第一次分配。
注意我只需要第一个匹配项,而不是所有其他匹配项
解决方案
这应该有效:
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/'))
或者使用正则表达式更好:
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/'))
推荐阅读
- javascript - 布尔值和文本字段验证 - Javascript
- docker - PKIX 路径构建无法在 Digital Ocean 中找到到请求目标的有效认证路径
- powershell - 查找 PowerShell 错误最初是终止还是非终止
- sql - MS SQL - 计算字段中单词的出现次数
- android - 如何将原始 h.264 文件转换为 mp4
- javascript - 警报关注输入字段后
- windows - 创建用于运行预定脚本的系统帐户?
- node.js - 带有 reactjs 和 nodejs 的 Shopify 应用程序没有 nextjs?
- java - 如何理解 java Path.toString() 方法
- c# - 为什么“Skip”和“Take”在获取的记录越来越多的情况下需要更长的时间?