如何通过Selenium和Python按照给定的HTML提取跨度旁边的img标题

时间:2018-08-14 09:17:14

标签: python selenium selenium-webdriver xpath webdriver

我正在进行网络爬网以检查一种可用性。 我想查看特定时间的标题。但是,如果标题为“ 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>

2 个答案:

答案 0 :(得分:0)

如果文本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")

答案 1 :(得分:0)

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

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

    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")