Como imprimir esta lista em DataFrame -Python / BeautifulSoup

Oct 22 2020

A saída para este código imprime cada linha no site fornecido abaixo.

No entanto, também inclui as tags. Essencialmente, gostaria de imprimir todas as linhas em um dataFrame, que posso colocar no Excel.

.text não funcionaria porque estou usando find_all, pois há tags que se repetem no nome.

Como seria o processo de remoção das tags indesejadas e, em seguida, ter a lista em um DF, replicando o site?

Obrigado.

import requests
from bs4 import BeautifulSoup
import pandas as pd
productlinks=[]
r=requests.get(url)
soup= BeautifulSoup(r.content,'html.parser')
content=soup.find_all('tr')
for item in content:
    title=item.find_all('td')
    print(title)

Respostas

1 AndrejKesely Oct 22 2020 at 04:03

A maneira mais fácil é usar pandas.read_html:

import pandas as pd

url='https://sitc.sitcancer.org/2020/abstracts/titles/'
df = pd.read_html(url)[0]
print(df)
df.to_csv('data.csv', index=False)

Impressões:

       #  ...                                           Keywords
0      1  ...  Adoptive immunotherapy; Monocyte/Macrophage; T...
1      2  ...  CAR T cells; Immune monitoring; Inflammation; ...
2      3  ...  Antibody; Biomarkers; Immune monitoring; T cel...
3      4  ...  Biomarkers; RNA; Solid tumors; Tumor microenvi...
4      5  ...  Antibody; B cell; Biomarkers; Immune monitorin...
..   ...  ...                                                ...
730  752  ...  Gene expression; Neoantigens; Regulatory T cel...
731  753  ...  Gene expression; Neoantigens; Regulatory T cel...
732  754  ...  Biomarkers; Chemokine; Chemotherapy; Costimula...
733  755  ...  Chemokine; Granulocyte; Myeloid cells; MDSC; T...
734  756  ...  Gene expression; Immune contexture; Immune sup...

[735 rows x 6 columns]

E salva data.csv(captura de tela do LibreOffice):