我一直在整个网站上进行搜索,希望找到答案,但是,我查看的每个问题都没有像我要抓取的页面那样嵌套的HTML代码过多。 我真的希望有人能发现我明显的错误。我有以下代码正在提取类别标题,但烦人的不是每个代码都附带的href。运行时,代码当前对所有href都返回“ 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()
如果有人能指出我的错误,我将不胜感激。
答案 0 :(得分:1)
请尝试以下代码。
for elem in categories:
print(elem.find_element_by_css_selector("a.divLink").get_attribute('href'))
答案 1 :(得分:0)
您正在传递get_attribute
方法的CSS选择器。那是行不通的。您只需要提供属性名称。如果网络元素elem
具有名为href
的属性,则它将打印该属性的值。
首先,获取锚点<a>
元素。所有子类别锚点都具有类divLink
。要获取锚元素,请尝试,
categories = driver.find_elements_by_class_name('divLink')
第二,通过在get_ttribute
中传递属性名称来打印属性值。 尝试,
print(elem.get_attribute("href"))
这样,您将可以打印所有
href
值。