最開始試了好多方法把webdriver放到path路徑下但是都有問題,找不到他們所說的什麼:/user/bin。真的不知道他們是怎麼弄的。所以,找了好多方法。最後自己將路徑獲取就行了:
path = "chromedriver的路徑"
driver = webdriver.Chrome(path)
ps: 如何獲取chromedriver的路徑:下載chromedriver後在finder中打開,在將文件拖到終端,就可出現路徑,然後直接複製路徑,替換到 chromedriver的路徑 這幾個字的位子就可以了。
下面是我爬取“去哪兒”的代碼:
from selenium import webdriver
#實現等待需要用到下面 3 個庫,By 庫用於指定 HTML 文件中 DOM 標籤元素(添加和刪除節點(HTML 元素)),
#WebDriverWait 庫用於等待網頁加載完成,
#expected_conditions 庫(下面用 as EC 給這個庫 起了個簡稱)用於指定等待網頁加載結束的條件。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
dep = '上海'
query='麗江'
path = "/Users/zhangxin/Downloads/DataAT/chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get("https://fh.dujia.qunar.com/?tf=package")
#訪問二級標籤
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "depCity")))
driver.find_element_by_xpath("//*[@id='depCity']").clear()
driver.find_element_by_xpath("//*[@id='depCity']").send_keys(dep)
driver.find_element_by_xpath("//*[@id='arrCity']").send_keys(query)
driver.find_element_by_xpath("/html/body/div[2]/div[1]/div[2]/div[3]/div/div[2]/div/a").click()
import time
#循環10次
for _ in range(2):
time.sleep(20)
routes = driver.find_elements_by_xpath('//*[@id="list"]/div/div[2]/h4/a')
#//*[@id="list"]/div[1]/div[2]/h4/a
#//*[@id="list"]/div[2]/div[2]/h4/a
#//*[@id="list"]/div[1]/div[2]/h4/a
for route in routes:
print(route.text)
#抓取下一頁
driver.find_element_by_xpath('//*[@id="hozFilter"]/div/div[3]/a[2]').click()
#---------------下面是結果----------------
Out:
上海-麗江3天2晚 | 入住麗江法文苑客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江·晴初閣客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江賽拉維客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江雲上公館 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江翁家大院 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江山水桃源客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江灼華苑精品客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江麗人居客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江李家院精品客棧 + 首都航空往返機票
上海-麗江3天2晚 | 入住麗江法文苑客棧 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江文華廿六度假民宿 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江花間堂·聽荷院 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江花間堂·青塵院 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江海映朗廷假日大酒店 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江悅榕莊 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江大研安縵酒店 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江圓明商務酒店 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江錦匯酒店 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江蘭燕賓館 + 首都航空/吉祥航空往返機票
上海-麗江3天2晚 | 入住麗江凱鑫商務酒店 + 首都航空/吉祥航空往返機票