BeautifulSoup и Selenium не могут найти div или текст на веб-сайте - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь использовать BeautifulSoup или Selenium, чтобы получить текст Head to Head или его div на betexplorer (ссылка ниже), но усилия оказались бесплодными. Если я просматриваю источник на chrome, нажимая ctrl + U, я могу ясно видеть его. Но переход к VsCode и последующий запуск приведенного ниже скрипта, похоже, не показывают ни текста, ни div в выгруженном источнике.

Вот мой код

BeautifulSoup version

from bs4 import BeautifulSoup
import requests 

def getlistings(listingurl):
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'} # fetching the url,
    response = requests.get(listingurl, headers=headers) 
    soup = BeautifulSoup(response.text, "html.parser")
    print(soup)

getlistings("https://www.betexplorer.com/soccer/armenia/first-league/shirak-gyumri-2-lernayin-artsakh/E3lQ7tzK/")

Версия Selenium

from Selenium import webdriver

import time

driver=webdriver.Firefox()

driver.implicitly_wait(3)

driver.get("https://www.betexplorer.com/soccer/armenia/first-league/shirak-gyumri-2-lernayin-artsakh/E3lQ7tzK/")

js = driver.page_source

print(js)

Заранее спасибо.

1 Ответ

0 голосов
/ 16 июня 2020

Я предполагаю, что вы хотите, что находится между <head> и </head>. Вы можете получить это с помощью .get_attribute('innerHTML'). Закомментировал исходный ответ, так как я ошибался насчет того, что вы имеете в виду под «лицом к лицу», лол. Смотрите обновление.

from Selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

import time

driver=webdriver.Firefox()

driver.implicitly_wait(3)

driver.get("https://www.betexplorer.com/soccer/armenia/first-league/shirak-gyumri-2-lernayin-artsakh/E3lQ7tzK/")

#head_inner_text_element = driver.find_element_by_xpath("//head")
#head_inner_text = head_inner_text_element.get_attribute('innerHTML')

#print(head_inner_text)

a = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='list-tabs list-tabs--secondary']//li//span[contains(text(), 'Head-to-head')]")))

print(a.text)

click_mutual = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
(By.XPATH, "//div[@id='mutual_div']//a[@href='javascript:void(0);']")))
click_mutual.click()

enter image description here

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