Разбор Python HTML: удаление лишнего HTML из вывода запроса get - PullRequest
0 голосов
/ 04 июня 2018

Я хочу сделать простой скрипт на python, чтобы автоматизировать процесс извлечения файлов .mov с SD-карты IP-камеры.Модель IP-камеры поддерживает http-запросы, которые возвращают HTML, содержащий информацию о файле .mov.Мой скрипт на 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())

OUTPUT:

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

Я хочу только вернуть файл MOV.Итак, удаление:

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

Я новичок в разборе HTML с python, поэтому я немного запутался с функциональностью.

Возвращенный 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>

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

как вы просили объяснить ваш код здесь:

# 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 возвращает содержимое строки ответа

вы передаете это (page.content) содержимое строкикласс BeautifulSoup, который инициализируется двумя аргументами вашего контента (page.content) в виде строки и синтаксического анализатора, здесь он html.parser

soup является объектом BeautifulSoup

.prettify() - это метод, используемый для красивой печати содержимого

При разрезании строк вы можете получить провал результата из-за длины содержимого, поэтому лучше разделить содержимое в соответствии с предложением @Rakesh, и это лучший подход в вашем случае.

0 голосов
/ 04 июня 2018

Используйте str.split с отрицательной индексацией.

Пример:

page = "NAME2041=Record_continiously/2018-06-02/8/MP_2018-06-03_00-33-15_60.mov"
print( page.split("/")[-1])

Выход:

MP_2018-06-03_00-33-15_60.mov
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...