美丽的汤奇怪地返回'/photo-missing.png'

时间:2019-01-03 21:43:03

标签: python-3.x web-scraping beautifulsoup

我正在尝试自动从www.premierleague.com网站下载播放器图像。我现在面临的问题是,当我使用BeautifulSoup解析播放器照片的img src时,它会返回“ photo-missing.png”。

de_gea

您可以在检查html时看到它称为p51490.png!?而不是“ photo-missing.png”

我的代码如下:

import requests
from bs4 import BeautifulSoup

player_page = requests.get('https://www.premierleague.com/players/4330/David-De-Gea/overview')
soup = BeautifulSoup(player_page.text, 'html.parser')
print(soup.find(class_="imgContainer"))

此输出将产生:

 <div class="imgContainer"><img alt="David De Gea" class="img" data- 
    player="p51940" data-script="pl_player-image" data-size="250x250" data- 
    widget="player-image" src="//platform-static- 
    files.s3.amazonaws.com/premierleague/photos/players/250x250/Photo- 
    Missing.png"/></div>

我想知道是否有人知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

它是由JS自动生成的,也许是为了防止刮擦。但是您可以将Photo-Missing替换为p51490,此值保存在data-player属性中。

soup = BeautifulSoup(player_page.text, 'html.parser')
# using CSS selector
img = soup.select_one('.imgContainer img')
img['src'] = img['src'].replace('Photo-Missing', img['data-player'])
print(img)
print(img['src'])