Проблема: Я не могу заменить <br>
теги символом новой строки, используя Beautiful Soup 4.
Код: Моя программа (соответствующая ее часть)в настоящее время выглядит как
for br in board.select('br'):
br.replace_with('\n')
, но я также попытался board.find_all()
вместо board.select()
.
Результаты: Когда я использую board.replace_with('\n')
все <br>
теги заменяются строковым литералом \n
.Например, <p>Hello<br>world</p>
в конечном итоге станет Hello\nworld
.Использование board.replace_with(\n)
вызывает ошибку
File "<ipython-input-27-cdfade950fdf>", line 10
br.replace_with(\n)
^
SyntaxError: unexpected character after line continuation character
Другая информация: Я использую ноутбук Jupyter, если это имеет какое-либо отношение.Вот моя полная программа, так как в другом месте я мог не заметить некоторые проблемы.
import requests
from bs4 import BeautifulSoup
import pandas as pd
page = requests.get("https://boards.4chan.org/g/")
soup = BeautifulSoup(page.content, 'html.parser')
board = soup.find('div', class_='board')
for br in board.select('br'):
br.replace_with('\n')
message = [obj.get_text() for obj in board.select('.opContainer .postMessage')]
image = [obj['href'] for obj in board.select('.opContainer .fileThumb')]
pid = [obj.get_text() for obj in board.select('.opContainer .postInfo .postNum a[title="Reply to this post"]')]
time = [obj.get_text() for obj in board.select('.opContainer .postInfo .dateTime')]
for x in range(len(image)):
image[x] = "https:" + image[x]
post = pd.DataFrame({
"ID": pid,
"Time": time,
"Image": image,
"Message": message,
})
post
pd.options.display.max_rows
pd.set_option('display.max_colwidth', -1)
display(post)
Буду признателен за любой совет.Спасибо за чтение.