Python очищает глубокие вложенные div, чьи классы меняются - PullRequest
0 голосов
/ 24 мая 2018

Я немного новичок в python и работаю над этой первой частью проекта, где мне нужно получить ссылку (и) на странице FanDuel, и я крутил свои шины, пытаясь получить 'href'.

Вот что показывает элемент проверки: what i'm trying to get to is highlighted

То, к чему я пытаюсь добраться, выделено выше.

Я вижу, чтокажется родителем, но когда вы спускаетесь по дереву, классы, перечисленные с помощью букв (то есть - "_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)

1 Ответ

0 голосов
/ 24 мая 2018

HTML создается с помощью javascript, чтобы проверить это, вместо использования элемента inspect, используйте view source-page и посмотрите, создан ли там HTML (это HTML, который вы получаете, когда выполняете запросы .get ()), я уже проверил это, и это правда.Чтобы решить эту проблему, вам нужно использовать Selenium для рендеринга javascript на странице, а затем вы можете получить исходный код страницы по селену после того, как он сконструировал элементы из DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...