【问题标题】:How to extract href using Selenium Python?如何使用 Selenium Python 提取 href?
【发布时间】:2019-10-16 19:38:25
【问题描述】:
<a class="j-search-result-value jiveTT-hover-user" data-userid="12345" href="/people/ARNLWS"><span class="j-search-result-title">Aaron Lewis</span></a>

<a class="j-search-result-value jiveTT-hover-user" data-userid="99886" href="/people/DONLDTUMP"><span class="j-search-result-title">Donald Trump</span></a>

如何从上面提取href?我尝试使用find_element_by_class_name,但返回NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".j-search-result-value jiveTT-hover-user"}

我的代码:

driver = webdriver.Chrome(r'xxxx\chromedriver.exe')

driver.get("xxx")

eList = driver.find_element_by_class_name('j-search-result-value jiveTT-hover-user')

hrefList = []
for e in eList:
   hrefList.append(e.get_attribute('href'))

for href in hrefList:
   print(href)

我没有使用xpath 的原因是它可能因网址而异。 任何帮助表示赞赏!谢谢。

【问题讨论】:

  • driver.find_element_by_class_name('j-search-result-value') 工作吗?
  • 它部分工作但也返回其他hrefs...
  • 那么可以过滤掉那些其他的href,例如没有“/people/... in is value..的hrefs有很多选项

标签: python selenium-webdriver selenium-chromedriver href


【解决方案1】:

.find_element_by_class_name 方法仅用于单个类名。

要收集元素列表,您必须使用.find_elements 而不是.find_element

我建议你像这样使用.find_elements_by_css_selector

eList = driver.find_elements_by_css_selector('.j-search-result-value.jiveTT-hover-user')

【讨论】:

  • 谢谢。 “.find_elements_by_css_selector”效果很好!
【解决方案2】:

想法: 建议找到那些包含data-userid属性的元素,然后提取它们的href属性:

未经测试的伪代码:

eList = driver.find_elements_by_x_path('//a[@data-userid]')

hrefList = []
for e in eList:
   hrefList.append(e.get_attribute('href'))

for href in hrefList:
   print(href)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2023-02-07
    • 2021-12-14
    • 2018-12-08
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多