我正试图从Transfermarkt的前25名最有价值球员中获得尽可能多的信息。我已经设法获得了一些信息(在同事和stackoverflow的帮助下),现在我试图获得玩家排名,我觉得很难,因为它看起来有所不同(我认为),来自其他元素。我是一个初学者,因此任何源材料或代码直接帮助都将有所帮助。链接到我要抓取的网站:Transfermarkt
我尝试通过不同的途径接触元素,但似乎无法理解。我已经在crummy.com上阅读了有关bs4的信息,并在stackoverflow上查看了其他transfermarkt示例,但是我对编码的不好的了解却给我带来了麻烦。我正在用我的主代码之外的不同类型的元素进行测试,以查看是否获得正确的结果。
我的测试代码如下所示,但打印内容没有任何显示。
import requests
from bs4 import BeautifulSoup
import re
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
}
r = requests.get(
"https://www.transfermarkt.co.uk/spieler-statistik/wertvollstespieler/marktwertetop", headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
for position in soup.find_all("td",class_="inline_table"):
print(position)
答案 0 :(得分:1)
从VarKas答案开始,但重新调整为您的原始尝试,如果您寻找'table'
类为'inline-table'
的{{1}},它将抓住玩家姓名和位置作为第1行的“迷你桌子”和2:
for table in soup.find_all('table', attrs={'class': 'inline-table'}):
content = table.contents
print(content[0].text) # Name
print(content[1].text) # Position
此外,如果您希望查找的内容多于前25个,则可以通过向URL添加'?page='
来浏览表的所有页面(共有20个页面):
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
}
pages = range(1, 20)
for page in pages:
r = requests.get(
"https://www.transfermarkt.co.uk/spieler-statistik/wertvollstespieler/marktwertetop?page=%d" % page, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
pretty = soup.prettify()
for table in soup.find_all('table', attrs={'class': 'inline-table'}):
content = table.contents
print(content[0].text) # Name
print(content[1].text) # Position
答案 1 :(得分:0)
使用此代码
saveDefaultConfig()