Я пытаюсь написать простой скрипт Python, чтобы продолжить изучение BeautifulSoup/Python.
Функциональность, которую я хотел бы, проста, я хотел бы извлечь div из файла HTML и обновить файл HTML, чтобы он содержал только содержимое этого div. Например, если мой HTML, index.html, содержит:
<head>
<title> Parsing HTML </title>
</head>
<body>
<h1> Title </h1>
<div class="content">
<p> This is the content </p>
<img src="img.jpg" />
</div>
</body>
После запуска моей программы я бы хотел, чтобы index.html содержал только
<div class="content">
<p> This is the content </p>
<img src="img.jpg" />
</div>
Таким образом, <div class="content">
будет использоваться в качестве параметра для определения места извлечения в HTML.
Я думаю, вам нужно использовать BeautifulSoup, чтобы написать это, вот моя попытка (для кода выше). Я также пытался сделать его рекурсивным:
import os
from bs4 import BeautifulSoup
def CleanUpFolder(dir):
directory = os.listdir(dir)
files = []
for file in directory:
if file.endswith('.html'):
files.insert(0, file)
if os.path.isdir(file):
CleanUpFolder(file)
for fileName in files:
file = open(dir + "\\" + fileName)
content = file.read()
file.close()
soup = BeautifulSoup.BeautifulSoup(content)
toWrite = soup.find("div", {"class": "main"})
file = open(dir + "\\" + fileName, 'w')
file.write(toWrite)
file.close()
dir = "C:\Users\Folder\Desktop\\testFolder"
CleanUpFolder(dir)
Мои ошибки:
Трассировка (последний последний вызов): файл «C:/Users/Admin/PycharmProjects/Extract-Main-2.py», строка 25, в CleanUpFolder (dir)
Строка 25 — последняя строка, CleanUpfolder(dir)
Я не понимаю, чем это вызвано.
а также -
Файл «C:/Users/Admin/PycharmProjects/Extract-Main-2.py», строка 20, в файле CleanUpFolder.write(toWrite) TypeError: ожидается объект символьного буфера
Это я получил из примера кода в документации BeautifulSoup, поэтому не понимаю, почему он не работает.
Любая помощь / обратная связь очень ценится - особенно объяснения, поскольку я нахожу BeautifulSoup гораздо более сложным, чем я должен был бы разобраться!
Спасибо :)