首页 > 解决方案 > Python HTML解析:从获取请求输出中删除多余的HTML

问题描述

我想做一个简单的 python 脚本来自动化从 IP 摄像机的 SD 卡中提取 .mov 文件的过程。IP 摄像机型号支持返回包含 .mov 文件信息的 HTML 的 http 请求。到目前为止我的python脚本..

from bs4 import BeautifulSoup
import requests
page = requests.get("http://192.168.1.99/form/getStorageFileList?type=3")
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify())

输出:

NAME2041=Record_continiously/2018-06-02/8/MP_2018-06-03_00-33-15_60.mov

我只想返回 MOV 文件。所以删除:

"NAME2041=Record_continiously/2018-06-02/8/"

我是使用 python 解析 HTML 的新手,所以我对这个功能有点困惑。

返回的 HTML 是否被视为字符串?如果是这样,我知道它将是不可变的,我将不得不创建一个新字符串,而不是“剥离”预先存在的字符串。

我努力了:

page.replace("NAME2041=Record_continiously/2018-06-02/8/","")

我收到一个属性错误。有谁知道任何可以实现这一目标的方法?

这是我正在使用的 HTML 示例...

<html>
<head></head>
<body>
000 Success NUM=2039 NAME0=Record_Continuously/2018-06-04/10/MP_2018-06-04_12-17-38_60.mov SIZE0=15736218 
NAME1=Record_Continuously/2018-06-04/10/MP_2018-06-04_12-16-37_60.mov SIZE1=15683077
NAME2=Record_Continuously/2018-06-04/10/MP_2018-06-04_12-15-36_60.mov SIZE2=15676882
NAME3=Record_Continuously/2018-06-04/10/MP_2018-06-04_12-14-35_60.mov SIZE3=15731539 
</body>
</html>

标签: pythonhtmlparsingweb-scraping

解决方案


当您在这里要求解释您的代码时,它是:

# import statements
from bs4 import BeautifulSoup  
import requests

page = requests.get("http://192.168.1.99/form/getStorageFileList?type=3")  # returns response object
soup = BeautifulSoup(page.content, 'html.parser')  # 

page.content返回响应的字符串内容

您将 this( page.content) 字符串内容传递给BeautifulSoup使用两个参数初始化的类,您的 content( page.content) 作为字符串和解析器,这里是html.parser

soup是对象BeautifulSoup

.prettify()是用于漂亮打印内容的方法

在字符串切片中,您可能会由于内容长度而导致结果失败,因此最好按照@Rakesh 的建议拆分您的内容,这是您情况下的最佳方法。


推荐阅读