我只是在用Python学习Selenium的来龙去脉,所以如果它不正确,请原谅我的问题。
Inspect Element Pic
我已经成功地从真实的数据流中提取了JSON数据。在使用另一个数据流略有不同的设备时,我不知道如何选择要抓取的特定id/class。
屏幕抓图显示网页的布局。这是我的代码,工作正常,但在这个特定的示例中,每第二个“行”不是我想要的数据。它是独立的json数据,与我需要的其他“行”的数据不同。在这种情况下,我如何定位第一行、第三行或第五行?
在尝试使用这个特定设备时,代码似乎会随机抓取其中一行,有时会抓取正确的行,有时则不会。由于这些都被称为“行”,我不确定如何针对特定的一个。
下面是我的代码中获取数据的部分:
driver = webdriver.Chrome()
driver.get("https://server.domain/")
element = driver.find_element(By.ID, "message")
element.send_keys(box_num)
element_send = driver.find_element(By.ID, "send")
element_send.send_keys('\ue007')
time.sleep(1)
element_pause = driver.find_element(By.ID, "pause")
element_pause.send_keys('\ue007')
# element_class = driver.find_element(By.ID, "stream")
element_data = driver.find_element(By.CLASS_NAME, "row")
data = element_data.text
虽然下面的代码似乎可以工作,但我不认为它是总是工作的正确语法。我对XPATH语法有点困惑,所以我只是随便玩玩
first_li = driver.find_element(By.XPATH, "//ul[@id='stream']/li[@class='row']")
first_lit = first_li.text
1条答案
按热度按时间ymdaylpp1#
下面是我的意思(请注意,
find_elements()
实际上会返回一个WebElement
的列表):你就能进入第一第三第五... list slicing:
doc to
find_elements()
函数:https://selenium-python.readthedocs.io/locating-elements.html