python - Python抓取类更改的深层嵌套div
问题描述
我对 python 有点陌生,并且正在处理项目的第一部分,我需要在 FanDuel 页面上获取链接,并且我一直在旋转轮胎试图获取“href”。
我想要达到的内容在上面突出显示。
我看到这似乎是父级,但是当你沿着树向下走时,用字母列出的类(即 - “_a _ch _al _nr _dq _ns _nt _nu”)每天都在变化。
我注意到的是,我需要的“href”有一个不变的“data-test-id”,所以我试图用它来找到我需要的东西,但它似乎不是在职的。
我不确定我是否需要深入研究以获得我需要的东西,或者我的代码是否完全关闭。提前感谢您的帮助!
import requests
from bs4 import BeautifulSoup
url = "https://www.fanduel.com/contests/mlb/96"
#authentication might not be necessary, it was a test, still getting the same results
site = requests.get(url, cookies={'X-Auth-Token':'MY TOKEN IS HERE'})
soup = BeautifulSoup(site.content, 'lxml')
game = soup.find_all('a', {'data-test-id':"ContestCardEnterLink"})
#If i use this, i get an error
game = soup.find_all('a', {'data-test-id':"ContestCardEnterLink"})[('href')]
print(game)
解决方案
HTML 是由 javascript 构造的,要检查这一点,而不是使用检查元素,使用查看源页面并查看 HTML 是否已经在那里构造(这是你在做 requests.get() 时得到的 html),我'已经检查过了,这是真的。要解决这个问题,你应该使用 Selenium 来渲染页面上的 javascript,然后你可以通过 selenium 从 DOM 构造元素后获取源页面代码。
推荐阅读
- python - 如何恢复 url 中的文本并将文本转换回来?
- ios - 动画切换 CollectionViewLayout
- python - xml中的注释转换为json?
- java - 如何将@Propertysource 文件转换为地图?
- redis - 来自不同日志文件中不同应用程序的 Celery 任务
- django - Celery RuntimeError: populate() 不可重入
- angular - 使用 Angular 7 + Webpack 4 封装 css
- go - 可以使用 Go 实现 VPP 插件吗?
- java - 在执行 jar 并将其输出重定向到文件时在控制台上打印 System.out.println 语句
- javascript - 我如何通过单击预先选择的选项来操纵 jquery 功能