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源
- 搜索源以查找字符串,如果找到字符串,则将整行提取到变量中
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/'))