【问题标题】:How can I print out list of drop down menu using Selenium Python?如何使用 Selenium Python 打印出下拉菜单列表?
【发布时间】:2017-01-17 01:49:48
【问题描述】:

我正在尝试使用 Selenium Python 及其 PhantomJS 函数打印此页面 (http://www.bobaedream.co.kr/cyber/CyberCar.php?gubun=I) 第一个下拉菜单中的所有项目。但它仍然返回 No Attribute 错误消息。

请帮忙。

我的代码 sn-p 如下:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import re

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select

from bs4 import BeautifulSoup
from time import sleep

link = 'http://www.bobaedream.co.kr/cyber/CyberCar.php?gubun=I'
driver = webdriver.PhantomJS()
driver.set_window_size(1920, 1080)
driver.get(link)
sleep(.75)

s = BeautifulSoup(driver.page_source, "html.parser", from_encoding='utf-8')

# open maker layer
next_elem = driver.find_element_by_xpath('//a[@title="제조사 선택"]')
next_elem.click()

# print maker
next_elem = driver.find_elements_by_tag_name('li')
print ("clicked maker", next_elem.text)
sleep(.75)

【问题讨论】:

    标签: python html selenium selenium-webdriver web-crawler


    【解决方案1】:

    next_elem 包含 元素列表(因为您使用了 find_elements_by_tag_name() 方法 - 请注意“s”),它没有 .text 属性。

    您可以通过使用find_element_by_tag_name() 匹配单个元素来快速修复它:

    next_elem = driver.find_element_by_tag_name('li')
    

    但是,我认为,您可能打算获取可以通过以下方式访问的制造商列表:

    makers = driver.find_elements_by_css_selector("#layer_maker ul.list li a")
    for maker in makers:
        print(maker.text)
    

    【讨论】:

    • 谢谢,alecxe。这正是我的意思。我非常感谢您的帮助。非常感谢。
    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多