python - 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>
解决方案
当您在这里要求解释您的代码时,它是:
# 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 的建议拆分您的内容,这是您情况下的最佳方法。
推荐阅读
- flutter - 是否可以同时使用谷歌登录和 Facebook 登录?
- sql - ANSI SQL - 如何根据前一行中的值更改将行分配给存储桶
- kotlin - 如何在kotlin中检查数组整数值?
- apache - htaccess 重写规则冲突
- web-scraping - 如何在以主动方式更改内容的网站上抓取数据?
- reactjs - Visual Studio Code JSX 查看混乱
- r - 将 FA(因子分析)应用于分组
- javascript - 固定数量实例上的概率函数
- javascript - 当 useSelector() 值改变时组件刷新
- jquery - Fetch 和 jQuery Ajax post 有什么不同?