我正在尝试从一个网站使用seleniumwebdriver获取酒店名称和价格。然而,我只得到一个空名单从我的回报。
from selenium import webdriver
url = 'https://www.travelodge.co.uk/search/results?location=Central+London&lat=&long=&action=search&source=l&checkIn=03%2F06%2F21&checkOut=05%2F06%2F21&rooms%5B0%5D%5Badults%5D=1&rooms%5B0%5D%5Bchildren%5D=0'
driver = webdriver.Chrome(executable_path='C:\\Users\\Conor\\Desktop\\diss\\chromedriver.exe')
driver.get(url)
working = driver.find_elements_by_class_name('hotel-card')
for work in working:
name = work.find_elements_by_xpath('.//*[@id="main"]/div/div[2]/div[3]/div[2]/div/div/div[2]/div/div[1]/h1/div/a')
price = work.find_elements_by_xpath('.//*[@id="main"]/div/div[2]/div[3]/div[2]/div/div/div[2]/div/div[2]/div/div/div[1]/h3/span')
print(name,price)
我使用的类名是否不正确?还是我的写作方式有问题?
1条答案
按热度按时间flvlnr441#
使用
dot
在xpath
你创造了relative xpath
所以它可以搜索name,price
仅在所选卡内。但你用[@id="main"]
它不是在卡片里面,而是在卡片外面——它找不到它。你应该跳过
[@id="main"]
使用我也把这些都去掉了
divs
因为只有一个h1
以及h3
在每张卡片上。我也用过
find_element
不带字符s
在word中element
因为只有一个元素h1
以及h3
在每张卡片上。最小工作代码:
结果: