Невозможно напечатать href? - PullRequest
0 голосов
/ 12 апреля 2019

Я искал по всему сайту в надежде найти ответ, однако, каждый просматриваемый вопрос не имеет сильно вложенного HTML-кода, такого как страница, которую я пытаюсь почистить. Я действительно надеюсь, что кто-то заметит мою очевидную ошибку. У меня есть следующий код, который вытягивает заголовки категорий, но, к сожалению, не то, что идет с каждым. При запуске код возвращает «None» для всех ссылок, но я не могу понять, почему. Я думаю, это может быть связано с тем, что я нацеливаюсь не на тот элемент, тег или класс в HTML, но не могу точно определить, каким он должен быть.

from selenium import webdriver
import time

# The website to scrape
url = "https://www.jtinsight.com/JTIRA/JTIRA.aspx#!/full-category-list"

# Creating the WebDriver object using the ChromeDriver
driver = webdriver.Chrome()

# Directing the driver to the defined url
driver.get(url)

# driver.implicitly_wait(5)
time.sleep(1)

# Locate the categories
categories = driver.find_elements_by_xpath('//div[@class="subCatEntry ng-scope"]')

# Print out all categories on current page
num_page_items = len(categories)
print(num_page_items)
for headers in range(num_page_items):
    print(categories[headers].text)
for elem in categories:
    print(elem.get_attribute("a.divLink[href='*']"))

# Clean up (close browser once task is completed)
time.sleep(1)
driver.close()

Буду очень признателен, если кто-нибудь укажет на мою ошибку.

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Попробуйте этот код ниже.

for elem in categories:
    print(elem.find_element_by_css_selector("a.divLink").get_attribute('href'))
0 голосов
/ 12 апреля 2019

Вы передаете селектор CSS для метода get_attribute. Это не сработает. Вы должны предоставить только имя атрибута. Если веб-элемент elem имеет атрибут с именем href, он напечатает значение этого атрибута.

Сначала получить элемент привязки <a>. Все якоря подкатегории имеют класс divLink. Для получения якорных элементов попробуйте это ,

categories = driver.find_elements_by_class_name('divLink')

Во-вторых, Напечатайте значение атрибута, передав имя атрибута в get_ttribute. Попробуйте это ,

print(elem.get_attribute("href"))

Таким образом, вы сможете распечатать все значения href.

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