【问题标题】:Python BeautifulSoup - Expand all <div> issuePython BeautifulSoup - 展开所有 <div> 问题
【发布时间】:2020-07-06 23:38:26
【问题描述】:

我是 python 新手,我使用 BeautifulSoup 从以下位置抓取数据:https://www.espn.com/mma/fightcenter

我可以在第一个战斗列表中执行所有我想要的操作,因为它默认展开。但是,我在后面的列表中遇到了问题,因为我想要的数据隐藏在“div”树下。

有没有办法在制作“汤”时在整个网页上展开所有这些树?

以下是我正在使用的当前代码行:

    headers = requests.utils.default_headers()
    headers.update({ 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 
    Firefox/52.0'})
    espnurl = 'https://www.espn.com/mma/fightcenter'
    req = requests.get(espnurl, headers)
    soup = BeautifulSoup(req.content, 'html5lib')

提前致谢!

【问题讨论】:

  • 嗨@burns 你找到问题的答案了吗?我也遇到了同样的问题,希望得到帮助。

标签: python web-scraping beautifulsoup


【解决方案1】:

上面的汤变量包含 html 文档中的所有内容。所以实际上,您可以使用在屏幕上无法看到的所有“折叠”信息。在网上抓取数据时,最好尽可能接近您想要的数据。例如,下面的代码将获取该屏幕上主要战斗的所有数据:

fights = soup.find_all('div', {"class" : "AccordionPanel"})
info = [fight.text for fight in fights]
print(info)

上面的fights 变量查找具有特定类名的所有“div”,这是您要查找的数据块的通用标识符。 之后,您可以通过循环遍历每个块找到所有文本。

【讨论】:

  • 感谢您的提示!但是我仍然有一个问题,我不相信我最初解释得很好。我试图将战斗机的统计数据设为:身高、体重、REACH、站姿、SIG STR LPM、SIG STR ACC、TD AVG、TD ACC 和 SUB AVG。以及打开每个战士的完整档案。但是,即使使用您发布的代码,我也无法在第一个战斗列表之后找到此信息。相反,我得到以下信息: print(info[1]) --> Alexander Volkanovski21-1-0PPVMatch 2-220 / +185Max Holloway21-5-0。其中不包括我正在寻找的信息。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 2019-07-16
相关资源
最近更新 更多