【问题标题】:Need help parsing html element and execute script no worked需要帮助解析 html 元素并执行脚本无效
【发布时间】:2019-04-10 13:01:37
【问题描述】:
<li tabindex="0" role="tab" aria-selected="false">
   <a href="#gift-cards" class="leftnav-links kas-leftnav-links" data-section="gift-cards" data-ajaxurl="/wallet/my_wallet.jsp">                         
   <span class="width200 kas-gift-cards-tab">Gift Cards</span>  
   <span class="count kas-count">info</span>
   </a>
</li>

我有这样一个 html 代码,它在一个页面上重复了大约 5 次,其中只有 2 个块有我需要的信息。他们的课是一样的,我不知道该怎么办。 另外,Firefox 中的 execute_script 对我不起作用。

html_list = driver.find_element_by_id("rewards-contents")
                items = html_list.find_element_by_tag_name("li")
                for item in items:
                    text = item.text
                    print(text)

我尝试在 python 上启动它,但没有任何明智的结果。

我希望脚本显示来自所有 5 个块的信息。

【问题讨论】:

标签: python selenium parsing html-parsing


【解决方案1】:

要获取所有元素,请使用 find_elements 而不是 find_element。您的代码应如下所示:

html_list = driver.find_element_by_id("rewards-contents")
items = html_list.find_elements_by_tag_name("li")
for item in items:
    print(item.text)

通过span元素获取文本:

html_list = driver.find_elements_by_css_selector("#rewards-contents li")
items = html_list.find_elements_by_tag_name("span")
for item in items:
    print(item.text)

【讨论】:

  • Да, оказывается там у меня была ошибка но вместо info вывелось 礼品卡 что является не совсем тем что я ищу。 Может быть можно к этой строке html_list.find_elements_by_tag_name("li") добавить ещё как то поиск по классу, если это возможно? И всё ещё открыт вопрос, почему в Firefox не работает стабильно execute_script?
  • Аттрибуты надо добавлять по необходимости, если не находит то что надо, можешь заменить на find_elements_by_css_selector('li a[href="#gift-cards"]'). Должен работать стабильно, что за скрипт?
  • driver.find_element_by_class_name("rewards-contents") items = html_list.find_elements_by_tag_name("span") for item in items: text = item.text print(text) HTML CODE:
  • 礼品卡 信息
  • Мне нужно вывести class="count kas-count"
  • 错误:在处理上述异常期间,发生了另一个异常:Traceback(最近一次调用最后一次):文件“C:\xampps\htdocs\brute_kohls\checker.py”,第 36 行,在 html_list = driver.find_elements_by_css_selector('li a[href="#gift-cards"]').text AttributeError: 'list' object has no attribute 'text' Code: html_list = driver.find_element_by_class_name("rewards-contents" ) items = html_list.find_elements_by_css_selector('li a[href="#gift-cards"]') for item in items: text = item.text print(text)
  • Я плохо понимаю о чём вы, может покажете пример кода? Буду очень благодарен
  • 【解决方案2】:

    感谢@Sers 提供css_selector 的提示。我通过以下方式解决了我的问题:

    `info = []
    time.sleep(2)
    htmllist = driver.find_element_by_class_name("rewards-contents")
    items = htmllist.find_elements_by_css_selector(".kas-count")
    for item in items:
    info.append(item.text)
    print(item.text)
    print(info)`
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签