使用不带XPath的Selenium查找元素

问题描述 投票:0回答:3

我想从Wikipedia上收集有关2019年美国机场年旅客的数据。可通过此处的机场页面访问此数字(所需数字用粉红色突出显示:]

我编写了这段代码,该代码适用于此特定元素的Xpath:

from selenium import webdriver
import selenium
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
def search(link):
  driver = webdriver.Safari()
  driver.get("https://en.wikipedia.org/")
  elem = driver.find_element_by_name("search")
  elem.clear()
  elem.send_keys(link)
  elem.submit()
  time.sleep(3)
  elem1 = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr[20]/td/table/tbody/tr[2]/td/text()')
  num = elem1.text
  print(num)
  driver.close()
search('IND airport')

而且非常有效!但是仅适用于该机场:(因此,我需要从该表访问此值,但也需要访问其他机场。Xpath可以替代吗?例如,如果我需要JFK的数据,则需要另一个Xpath,这会使我的代码无用用于机场列表。enter image description here

python selenium xpath web-scraping wikipedia
3个回答
1
投票
使用以下xpath选项。它将用文本包含Passengers然后是following-sibling::td的方式标识Th标签>

elem1 = driver.find_element_by_xpath("//*[@id='mw-content-text']//table/tbody//th[contains(.,'Passengers')]/following-sibling::td") num = elem1.text


1
投票
您需要尽可能地概括一下,因为不同的页面将具有不同的行顺序等。

0
投票
您可以从以下Wikipedia网站获取乘客数据:https://en.wikipedia.org/wiki/List_of_busiest_airports_by_passenger_traffic
© www.soinside.com 2019 - 2024. All rights reserved.