如何通过Selenium和Python根据给定的HTML提取span旁边的img标题



我正在制作一个网络爬行来检查一种可用性。 我想检查特定时间的标题。但是,如果标题为"NO",则没有 href,否则有 href。因此,它的 xpath 取决于标题。标题名称每次都会更改。所以我无法通过 xpath 检查。

如果我想查看09:00~11:00的可用性,该怎么做?

我试图通过XPATH找到。但是,由于 XPATH 按照我所说的更改,我无法检查我想要的具体时间。

提前谢谢。

下面是 HTML 代码。

<span class="rs">07:00~09:00</span><img src="../images/reservation_btn04.gif" title="NO"><br>
<span class="rs">09:00~11:00</span><img src="../images/reservation_btn04.gif" title="NO"><br>
<span class="rs">11:00~13:00</span><img src="../images/reservation_btn04.gif" title="NO"><br>
<span class="rs">13:00~15:00</span><a href="./reg_add.asp?regdate=2018-09-16&amp;ftime=4&amp;ftype=1&amp;fac=C"><img src="../images/reservation_btn03.gif" title="YES"></a><br>
<span class="rs">15:00~17:00</span><a href="./reg_add.asp?regdate=2018-09-16&amp;ftime=5&amp;ftype=1&amp;fac=C"><img src="../images/reservation_btn03.gif" title="YES"></a><br>
<span class="rs">17:00~19:00</span><a href="./reg_add.asp?regdate=2018-09-16&amp;ftime=6&amp;ftype=1&amp;fac=C"><img src="../images/reservation_btn03.gif" title="YES"></a><br>
<span class="rs">19:00~21:00</span><img src="../images/reservation_btn04.gif" title="NO"><br>

根据您共享的HTML来检查任何时间跨度的可用性,例如09:00~11:00,您可以使用以下解决方案:

  • 您可以创建一个function(),该将参数作为时间跨度并提取可用性,如下所示:

    def check_availability(myTimeSpan):
    print(driver.find_element_by_xpath("//span[@class='rs'][.='" + myTimeSpan + "']//following::img[1]").get_attribute("title"))
    
  • 现在,您可以使用任何时间跨度调用函数check_availability(),如下所示:

    check_availability("09:00~11:00")
    

如果文本09:00~11:00是固定的,你可以像这样找到img元素——

element = driver.find_element_by_xpath("//span[@class='rs' and contains(text(),'09:00~11:00')]/following-sibling::img")

要检查元素的title属性是否为"YES"-

if element.get_attribute("title") == 'YES':
// do whatever you want

要获取所需元素的href属性-

source = driver.find_element_by_xpath("//span[@class='rs' and contains(text(),'09:00~11:00')]/following-sibling::img[@title='YES']/preceding-sibling::a").get_attribute("href")

最新更新