从XPath获取文本值
我为什么需要用这段代码来从XPath中获取文本值呢?
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
with open('restaurants.csv', 'w', encoding='utf-8') as file:
file.write('name \n')
driver = webdriver.Chrome()
driver.get('https://www.tripadvisor.co.nz/Restaurants-g1811027-Auckland_North_Island.html')
time.sleep(3)
names = driver.find_elements(By.XPATH, "//div[@class='biGQs _P fiohW alXOW NwcxK GzNcM ytVPx UTQMg RnEEZ ngXxk']/a")
with open('restaurants.csv', 'a', encoding='utf-8') as file:
for name in names:
file.write(name.text + '\n')
file.close
driver.quit()
但是当我用我原来的代码时,它不让我从XPath中获取文本值,为什么呢?
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
with open('restaurants.csv', 'w', encoding='utf-8') as file:
file.write('name \n')
driver = webdriver.Chrome()
driver.get('https://www.tripadvisor.co.nz/Restaurants-g1811027-Auckland_North_Island.html')
time.sleep(3)
name = driver.find_elements(By.XPATH,"//div[@class='biGQs _P fiohW alXOW NwcxK GzNcM ytVPx UTQMg RnEEZ ngXxk']/a")
with open('restaurants.csv', 'a', encoding='utf-8') as file:
for i in range(len(name)):
file.write(name.text +'\n')
file.close
driver.quit
谢谢 :)
1 个回答
0
问题不在于XPath,而是在于你访问name
和names
变量的方式。
在你那段不工作的代码中,你使用了
for i in range(len(name)):
但你从来没有提到过i
。应该是
for i in range(len(name)):
file.write(name[i].text +'\n')
^^^
我觉得你最近的代码更容易阅读和理解。
你应该花点时间去看看关于循环的内容,了解一下它们之间的区别,具体可以参考文档。