Могу ли я получить URL, сгенерированный JavaScript, с использованием Selenium и Python 3? - PullRequest
0 голосов
/ 05 февраля 2019

Я пишу парсер, используя Selenium и Python 3.7 для следующего сайта - https://www.oddsportal.com/soccer/germany/bundesliga/nurnberg-dortmund-fNa2KmU4/

Мне интересно, чтобы получить URL, сгенерированный JavaScript, с использованием Selenium в Python 3?

Мне нужно получить URL для событий с сайтов, с которых взяты данные в таблице.

enter image description here

Например.Мне кажется, что данные в первой строке (10Bet) получены с этой страницы - https://www.10bet.com/sports/football/germany-1-bundesliga/20190218/nurnberg-vs-dortmund/

Как можно получить URL этой страницы?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Попробуйте следующий код, который напечатает необходимые URL-адреса в соответствии с вашим требованием:

from selenium import webdriver
driver = webdriver.Chrome('C:\\NotBackedUp\\chromedriver.exe')
driver.maximize_window()
driver.get('https://www.oddsportal.com/soccer/germany/bundesliga/nurnberg-dortmund-fNa2KmU4/')

# Locators for locating the required URL's
xpath = "//div[@id='odds-data-table']//tbody//tr"
rows = "//div[@id='odds-data-table']//tbody//tr/td[1]"
print("=> Required URL's is/are : ")
# Fetching & Printing the required URL's
for i in range(1, len(driver.find_elements_by_xpath(rows)), 1):
    anchor = driver.find_elements_by_xpath(xpath+"["+str(i)+"]/td[2]/a")
    if len(anchor) > 0:
        print(anchor[0].get_attribute('href'))
    else:
        a = driver.find_elements_by_xpath("//div[@id='odds-data-table']//tbody//tr["+(str(i+1))+"]/td[1]//a[2]")
        if len(a) > 0:
            print(a[0].get_attribute('href'))

print('Done...')

Надеюсь, это поможет ...

0 голосов
/ 05 февраля 2019

Чтобы получить URL всех ссылок на странице, вы можете сохранить все элементы с тэгом a в списке WebElement, а затем вы можете получить атрибут href, чтобы получить ссылку для каждого из них.WebElement.

Вы можете обратиться к следующему коду для всей ссылки, представленной на странице отверстия:

List<WebElement> links = driver.findElements(By.tagName("a")); //This will store all the link WebElements into a list

    for(WebElement ele: links) // This way you can take the Url of each link
    {
    String url = ele.getAttribute("href"); //To get the link you can use getAttribute() method with "href" as an argument 
    System.out.println(url);
    }

В случае, если вам нужна явная ссылка, вам нужно передать xpath:элемент

WebElement ele = driver.findElements(By.xpath("Pass the xapth of the element"));

и после этого вам нужно сделать это

String url = ele.getAttribute("href") //to get the url of the particular element 

Я также поделился ссылкой с вами, чтобы вы могли проверить и отметить, что я выделил элементы в этом

enter image description here

сообщите нам, помогло это или нет

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