python - Tripadvisor 中使用 Selenium (xpath) 抓取的问题
问题描述
我是 python 和抓取的新手。我正在尝试提取有关 Tripadvisor 的信息。首先,我需要 Selenium 进行爬行,但是当我在不同时间运行程序时,路径会发生变化。
我给你看一个例子:
import urllib.request
import urllib.parse
from selenium import webdriver
import csv
from selenium.webdriver.common.action_chains import ActionChains
import time
from _datetime import datetime
from selenium.webdriver.common.keys import Keys
options=webdriver.ChromeOptions()
options.headless=False
prefs={"profile.default_content_setting_values.notofications" :2}
options.add_experimental_option("prefs",prefs)
chromedriver = "C:/Users/rober/OneDrive/Escritorio/tfm/chromedriver.exe"
driver=webdriver.Chrome(chromedriver)
driver.maximize_window()
time.sleep(5)
driver.get("https://www.tripadvisor.es/")
//*[@id="component_5"]/div/div/div/span[3]/div/div/div/a/span[2]
#Click Restaurants
driver.find_element_by_xpath('//*[@id="component_5"]/div/div/div/span[3]/div/div/div/a').click()
#Introduce localization
driver.find_element_by_xpath('//*[@id="BODY_BLOCK_JQUERY_REFLOW"]/div[14]/div/div/div[1]/div[1]/div/input').send_keys("madrid")
在代码的最后部分,有时 div[14] 是 div[13] 或 div[15]。是否可以使用绝对 xpath 或使用其他形式?
谢谢
解决方案
推荐阅读
- sql-server - 如何在sql server中连接Azure数据库
- c# - 在输入文本中有多个 % 运算符的 LINQ 中等效的 SQL LIKE 运算符是什么?
- elasticsearch - 如何使用摄取插件导入文本数据?
- python - 如何计算两个日期时间的月差?
- scala - 如何将 List[String] 或 List[Double] 转换为 List[Row]?
- reactjs - 我有一个 React 客户端和 Jetty 服务器,我想在这两者之间建立一个接口,以便我可以传递我的 CORS 标头。如何做到这一点?
- corda - 在 Corda 中,运行引导程序时不正确指定输入名称错误
- ssis - 使用 ssis 脚本任务从门户网站下载 excel 文件时出现错误消息
- scala - 如何提高文件阅读能力
- laravel - Laravel 5 同一张表上的多个关系类型