我安裝的python和pycharm community edition分別是:Python 3.8.5 和PyCharm 2020.2 (Community Edition)
在commandline中,運行:pip install selenium
在PyCharm中,點擊 File -> Settings -> Project -> Python Interpreter -> + -> 輸入selenium,點擊install
import re from selenium import webdriver from time import sleep if __name__ == '__main__': # 后面是你的瀏覽器驅動位置,記得前面加r'','r'是防止字符轉義的 driver = webdriver.Chrome(r'D:\panda\webDriver\chromedriver.exe') driver.get("https://www.newsmth.net/") driver.find_element_by_id("id").send_keys("********") #自己手動去水木注冊一個賬戶 driver.find_element_by_id("pwd").send_keys("********") driver.find_element_by_id("b_login").click() sleep(1) driver.maximize_window() # 顯示當前URL # print(driver.current_url) driver.get(driver.current_url) driver.find_element_by_id("b_search").send_keys("社會招聘\n") sleep(1) print(driver.current_url) href_list = [] items = driver.find_elements_by_xpath("//section[@id='body']/div[@class='b-content']/table/tbody/tr/td/a") # 右鍵“檢查”或“查看源代碼”可以看到元素的xpath for item in items: if "測試" in item.text or "QA" in item.text: print(item.text) href_list.append(item.get_property("href")) print(item.id, item.get_property("href")) # id會改變,不能后退,后退得重新找元素。 sleep(1) # print(href_list) for i1 in href_list: items = driver.find_elements_by_xpath("//section[@id='body']/div[@class='b-content']/table/tbody/tr/td/a") for i2 in items: if i2.get_attribute("href") == i1 and ("測試" in i2.text or "QA" in i2.text): print(i2.id, end=" ") i2.click() sleep(1) print(driver.current_url) driver.back() sleep(1) break #后退得重新找元素,所以這里break sleep(1) driver.quit()
這里需要注意:
1. driver.get(driver.current_url) 有的時候如果沒有這句,可能定位不到那個元素
2. driver.back() 這個是goback操作,但是對於右側為動態item,后退會導致id變化,以至於找不到曾經的那些元素。
3. 關於元素的定位,可以右鍵點擊鼠標,選擇“查看網頁源代碼”或者“檢查”能找到。如果根據xpath來定位,可以根據id找到相對路徑第一層的元素,然后往下找。