【问题标题】:selenium python link_text.click() [duplicate]硒 python link_text.click() [重复]
【发布时间】:2018-05-28 09:46:08
【问题描述】:

我目前正在编写一个 python selenium 脚本来抓取“Likibu.com”, 它是一个提供短期住宿的网站,例如 Airbnb,我已成功获取页面中存在的所有数据并将它们保存在 csv 文件中, 我的问题是我的程序永远不会停止,因为当我到达首页时,变量“href”中总是有一个值我的程序保持运行即使(href)的值是“#”,所以我想要做的是当我到达最后一页时,我的程序在抓取后立即停止,而不是点击 href = "#" 我管理此代码如下:

if not driver.find_element_by_link_text('»'):
       break
 # Open next page
 driver.find_element_by_link_text('»').click()

这是网页的源代码:

<ul class="pagination">
<li class="disabled"><a href="#">«</a></li>
<a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&amp;destination_id=4094&amp;page=1">1</a></li>
<li><a class="" rel="nofollow" href="https://www.likibu.com/fr/search/39tuzgbpnycdv7tkj102g?guests=2&amp;destination_id=4094&amp;page=2">2</a></li>
<li><li class="active"><a class="" rel="nofollow" href="#">»</a></li>

【问题讨论】:

  • 您对if not driver.find_element_by_link_text('»') 有什么期望?如果没有这样的元素,你会得到NoSuchElementExceptionbreak(我想提供的代码是循环的一部分)永远不会被执行。另请注意,我已经分享了@98​​7654321@ - 如果您需要一些说明而不是提交有关同一问题的新问题,请在答案下方留下评论...
  • 如果下一页不存在则中断
  • 只需将try/except构造实现为here

标签: python html selenium beautifulsoup


【解决方案1】:

您正在检查一个元素,并且该元素始终显示。所以它是无限循环的。您可以检查 href 属性是否等于 #,如下所示。它可能会解决您的问题。

if driver.find_element_by_link_text('»').get_attribute('href') == '#':
       break
 # Open next page
 driver.find_element_by_link_text('»').click()

【讨论】:

【解决方案2】:

尝试如下

element = browser.find_element_by_id("your_element_id")
element.click()

【讨论】:

  • 但是id属性不存在
猜你喜欢
  • 2021-03-06
  • 2021-07-14
  • 1970-01-01
  • 2019-04-26
  • 2018-08-02
  • 2020-09-25
  • 2020-07-16
  • 2020-07-12
  • 1970-01-01
相关资源
最近更新 更多