【发布时间】:2019-09-23 08:24:41
【问题描述】:
我正在尝试从Transfermarkt.com 为一个项目抓取一个(足球队)表,但有些列具有相同的类名并且无法区分。
列 [2,10] 具有独特的类并且工作正常。我正在努力寻找获得其余部分的方法。
from bs4 import BeautifulSoup
import pandas as pd
headers = {'User-Agent':
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
page = "https://www.transfermarkt.com/hertha-bsc-u17/kader/verein/21066/saison_id/2018/plus/1"
pageTree = requests.get(page, headers=headers)
pageSoup = BeautifulSoup(pageTree.content, 'html.parser')
Players = pageSoup.find_all("a", {"class": "spielprofil_tooltip"})
Values = pageSoup.find_all("td", {"class": "zentriert"})
PlayersList = []
ValuesList = []
for i in range(0, 25):
PlayersList.append(Players[i].text)
ValuesList.append(Values[i].text)
df = pd.DataFrame({"Players": PlayersList, "Values": ValuesList})
我想抓取该表行上的所有列。
【问题讨论】:
-
获取所有
<td>并使用索引来获取价值 - 即。value = all_tds[5] -
我会得到所有
<tr>和每一行<tr>我会得到<td>这样我会单独处理一行,我会确保我不会从其他行获得价值排。而且我可以使用索引而不是类来获得正确的值。 -
pandas具有函数pd.read_html(url)可以查找HTML中的所有表格并将每个表格转换为DataFrame
标签: python web-scraping beautifulsoup html-parsing