【问题标题】:Not scraping website data with beautifulsoup不使用 beautifulsoup 抓取网站数据
【发布时间】:2021-10-26 16:15:41
【问题描述】:

这是我第三次或第四次使用 BeautifulSoup。我将它与请求库一起使用以从sports' website 中抓取数据。我正在尝试抓取运动员的信息,例如姓名、年龄、身高等。但是,在尝试获取信息时(打印(玩家名称)),我得到的是这个,而不是网站页面中显示的内容:

姓名:{{details.player.person.lastName}},{{details.player.person.firstName}}

有没有办法访问真实数据?

我的代码:

import requests
from bs4 import BeautifulSoup

def scrape_player(player_url):

    response_player = requests.get(player_url)
    player_soup = BeautifulSoup(response_player.text, 'html.parser')
    div = player_soup.find('div', {'class' : 'player-info-row'})
    player_name = div.text
    print(player_name)
    


if __name__ == '__main__':
     scrape_player('https://ehfcl.eurohandball.com/men/20212/player/LFpFsiLDFvxs_tXnKlFAQw/luis-frade/')

【问题讨论】:

  • 嘿@Duarte Guerreiro 欢迎来到SO!请用代码编辑您的问题,以便于理解!
  • 感谢您的欢迎信息。 @BhavyaParikh 我刚刚编辑了问题
  • 我无法打开显示 404 的 URL!

标签: python beautifulsoup screen-scraping


【解决方案1】:

网站从脚本标签加载数据,因此它的动态加载和bs4 将无法通过标签或类捕获,但尽管它存在于script 标签中

import requests
from bs4 import BeautifulSoup
url = "https://ehfcl.eurohandball.com/men/2021-22/player/Z8PG_QqFxhA-6PTQ4gcCSA/stas-skube/"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

在这里我们可以找到script标签并将数据加载为json格式,返回数据作为键值对,你可以提取你想要的数据!

data=soup.find("script",attrs={"type":"application/ld+json"})

import json
main_data=json.loads(data.string)

print(main_data['name'])
print(main_data['birthDate'])

输出:

Skube Stas
1989-11-15

【讨论】:

  • 非常感谢。我在抓取时从未使用过 BeautifulSoup 的 json 函数,但发现它可以做什么很有趣。运行时唯一的问题是我得到: NameError: name 'headers' is not defined。但是,一旦我删除了“headers = headers”,它就可以正常工作了。再次感谢您!
  • 你可以删除它,只是拼写错误!
猜你喜欢
  • 2019-12-15
  • 1970-01-01
  • 2019-09-26
  • 2020-05-30
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多