Я не могу удалить пробелы табуляции из веб-данных, которые я хочу ввести в лист Excel.
import requests as r
from bs4 import BeautifulSoup
url='https://www.screener.in/screens/41109/all-stocks/?limit=100&page=1'
response = r.get(url)
soup=BeautifulSoup(response.text, 'html.parser')
table=soup.find_all('table')
table_len=soup.find_all(len('table'))
scrnr_table=soup.find_all('th')
header_tags=[header.text.strip('\n') for header in scrnr_table]
data_rows = soup.find_all('tr')
row_values = [dr.text.strip() for dr in data_rows]
for header in header_tags:
h_values=header.strip('\n')
print(header)
Отвечать :
S.No.
Name
CMP
Rs.
P/E
Mar Cap
Rs.Cr.
Div Yld
%
NP Qtr
Rs.Cr.
Qtr Profit Var
%
Sales Qtr
Rs.Cr.
Qtr Sales Var
%
ROCE
%
S.No.
Name
CMP
Rs.
P/E
Mar Cap
Rs.Cr.
Div Yld
%
NP Qtr
Rs.Cr.
Qtr Profit Var
%
Sales Qtr
Rs.Cr.
Qtr Sales Var
%
ROCE
%
Похоже, что на заполняющиеся пространства не влияет метод str.strip('\n')
или str.strip('\t')
.
Пожалуйста, помогите мне в этом.
может header.get_text('\n', strip=True)
? Добавление образца HTML было бы лучше, чем загрузка URL-адреса.
Попробуйте вместо этого распечатать результат полосы `print(h_values)`
Включите часть кода, в которой вы пытаетесь удалить пробелы и строки. Это поможет диагностировать проблему.
Используйте метод bs4.BeautifulSoup.get_text для управления символом разделителя и флагом полосы. Вот как отредактировать соответствующую строку:
header_tags = [header.get_text('\n', strip=True) for header in scrnr_table]
Вот первые несколько результатов вывода
S.No.
Name
CMP
Rs.
P/E
Mar Cap
Rs.Cr.
Div Yld
%
NP Qtr
#[...]
Обратите внимание, что пустой строки нет.
Если вы просто используете
.strip()
, он удалит начальные и конечные пробелы. В любом случае вы можете использовать регулярное выражение для удаления любого непечатаемого текста.