我正在尝试运行下面的代码,在我看来这就像一个普通的抓取片段,它应该返回列表中的表数据,但返回时有一堆空白。我试着用strip((删除多余的字符并替换(","(。不幸的是,没有运气。
知道怎么清理这个吗?或者这是我试图访问的网站上的html问题?
from bs4 import BeautifulSoup as bs
import requests
import pandas as pd
import csv
url = 'https://www.felvi.hu/felveteli/ponthatarok_statisztikak/friss_statisztikak/!FrissStatisztikak/index.php/friss_statisztikak/szakonkent?filters%5Bsta_iin_id%5D=1475&filters%5Bsta_kar_id%5D='
result = requests.get(url)
html_code = bs(result.text, "html.parser")
table = html_code.find('table', class_ = "center tblc w100 l")
rows = table.find_all('tr')
list_rows = []
for row in rows:
row_td = row.find_all('td')
for i in row:
print(i)
str_cells = row_td
#clean_text = bs(str_cells,"lxml").get_text()
#list_rows.append(clean_text)
您可以使用以下代码从该页面获取所有四个表:
import pandas as pd
dfs = pd.read_html('https://www.felvi.hu/felveteli/ponthatarok_statisztikak/friss_statisztikak/!FrissStatisztikak/index.php/friss_statisztikak/szakonkent?filters%5Bsta_iin_id%5D=1475&filters%5Bsta_kar_id%5D=')
for df in dfs:
print(df)
这将返回4个表:
_______________
0 1
0 Felhasználónév: NaN
1 Jelszó: NaN
_______________
0 1
0 Belépés Mégsem Belépés Mégsem
_______________
0
0 Szűkítési feltételek:
1 Intézményválasztó:
2 ... Állatorvostudományi Egyetem (ATE) András...
3 Karválasztó:
4 ... Állatorvostudományi Egyetem (ATE )
_______________
0 1 2 3 4
0 Szak KMF Jelentkezők Jelentkezők Felvettek
1 Szak KMF Össz. Első. Felvettek
2 állatorvosi ONA 597 458 116
3 állatorvosi ONK 231 15 34
4 biológia ANA 193 60 29
5 biológia ANK 37 2 1
6 biológus MNA 43 11 9
7 biológus MNK 4 0 0
这些桌子中有你想要的吗?
Pandas相关文件可在https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_html.html
您可以使用pandas轻松地从表中获取数据
html_code = bs(result.text, "html.parser")
table = html_code.find('table', class_ = "center tblc w100 l")
df = pd.read_html(str(table))
您将在如下数据帧中获取数据:
0 1 2 3 4
0 Szak KMF Jelentkezők Jelentkezők Felvettek
1 Szak KMF Össz. Első. Felvettek
2 állatorvosi ONA 597 458 116
3 állatorvosi ONK 231 15 34
4 biológia ANA 193 60 29
5 biológia ANK 37 2 1
6 biológus MNA 43 11 9
7 biológus MNK 4 0 0