第一步當然是導包了。自動化需要的包小夥伴還記得嗎,就是selenium,具體如下:
from selenium import webdriver from selenium.webdriver.support.ui import Selectfrom selenium.webdriver.common.action_chains import ActionChains
① 代碼講解
代碼1: 調用selenium包中的webdriver模塊,相信小夥伴都已經安裝了webdriver軟體在谷歌瀏覽器安裝目錄了吧,這個模塊將會啟用webdriver軟體進而實現谷歌瀏覽器自動化操作;
代碼2: 調用Select模塊,當頁面需要對單選框、複選框、下拉框進行操作時,就要調用這個模塊,因為在接下來操作我們需要在Format中選擇CSV格式(如圖),所以可以提前導入這個模塊;
代碼3: ActionChains模塊是真實模擬鍵鼠操作,如滑鼠懸停、雙擊、右擊等操作,可以說是selenium中的萬能利器。
PS:如有需要Python學習資料的小夥伴可以加下方的群去找免費管理員領取
可以免費領取源碼、項目實戰視頻、PDF文件等
進入準備階段了,對一些參數提前設置,方便第三步的正式操作
find = input(&39;)url = &39;+find+&39;driver = webdriver.Chrome()driver.get(url)driver.maximize_window()driver.implicitly_wait(10)
①代碼講解
代碼1: 是通過input函數實現人機互動,將我們需要查找的內容賦值給一個叫「find」的變量(小夥伴可以自定義變量,如果修改的話在代碼2中也要記得修改成新的變量名)。
單獨運行這句代碼,python會出現如下界面:可以看到,input()中的內容會出現在終端,起到提示作用,小夥伴可以自定義內容;在綠色框中輸入內容,會賦值給「find」這個變量。
在這裡小編以「T2DM」為例,輸入「T2DM」回車,這時候「find」就等於「T2DM」,然後就可以通過代碼2賦值為「url」變量,這就是接下來我們要自動化頁面的連結了。
注意事項
如果有小夥伴覺得沒必要人機互動,也可以直接賦值,依然以」T2DM「為例,如下:效果是一樣的。
注意:在python中除了文本輸入,其餘符號均為英文符號。在這裡的引號應為&34;而不是「 」。
find = &34;url = &39;+find+&39;
② 代碼講解
代碼1代碼2: 我們就能獲取對應的連結地址,接下來可以通過調用瀏覽器來訪問該頁面了。
代碼3: 通過webdriver模塊調用Chrome瀏覽器(相信小夥伴通過之前教程已經把webdriver軟體安裝在谷歌瀏覽器的安裝目錄了),然後通過代碼4讓谷歌瀏覽器訪問剛才的連結地址。當運行到代碼4時,可以看到python自動打開了如下界面:
③代碼講解
對於打開的頁面,我們可以進一步優化設置。通過代碼5,將窗口最大化,然後設置隱性等待為10s。(不記得顯性等待和隱性等待區別的小夥伴可以參照上一篇python教程)
在開始前要曉得一個概念:
① python是根據我們設置好的邏輯進行自動化操作,所以我們不是直接跟python說「去把這些文獻下載了」,這不是python所能理解的邏輯;而是跟python說,「你先點這裡,然後點這裡,選這個,然後點這裡,等一下,然後再點這裡」,也就是說,如果我們要讓python實現自動化,就要將我們要做的事拆分給python聽。
So, 先手動操作→記錄每個操作→轉換成代碼,然後修飾一下就是python語言了。這時候打開剛才的pubmed界面,可以進行批量下載的操作是很多種的,小編只是舉一個例子,但實質是一樣的,小夥伴們可以舉一反三。
② 手動操作。單擊Save→單擊Format→選擇CSV→Creat file,這時候就可以整頁保存了。
下拉到底部→Jump to page→Jump,就可以跳轉下一頁,然後重複以上操作即可。
③ 轉換成代碼。通過3.2的步驟,我們可以跟python說「先點這個再點這個再點這個」了,但怎麼轉換成代碼,小夥伴們記住一句代碼
ActionChains(driver).move_to_element(driver.find_element_by_xpath(&39;)).click().perform()
記住這句代碼幾乎可以在後續的自動化中橫著走,這句代碼有點長,拆分一下:
ActionChains(driver)move_to_element( A )driver.find_element_by_xpath( &39; )click()perform()
代碼講解:
代碼1: 調用ActionChains來操作driver,怎麼操作?看代碼2;
代碼2: 將滑鼠移動到A這個元素,A這個元素是啥?看代碼3;
代碼3: 通過driver來找一個「B」的xpath,找回的結果就是A。
代碼4:滑鼠單擊;
代碼5:將上述操作依次進行。
用另一個方式解讀,就是尋找一個叫「B」的xpath,然後滑鼠移動到這個xpath並單擊,這樣就模擬了真實滑鼠的移動單擊操作了。
貼上小編寫的代碼
for i in range(51,56): driver.implicitly_wait(10) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;save-results-panel-trigger&39;)).click().perform() Select(driver.find_element_by_xpath(&34;save-action-selection&39;)).select_by_visible_text(&34;) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;save-action-format&39;)).click().perform() Select(driver.find_element_by_xpath(&39;)).select_by_visible_text(&34;) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;save-action-panel-form&39;)).click().perform() target =driver.find_element_by_xpath(&34;search-results&39;) driver.execute_script(&34;, target) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;search-results&39;)).click().perform() ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;search-page&39;)).click().perform() print(&39;+str(i)+&39;) print(&39;+str(i+1)+&39;)driver.quit()print(&39;)
可以看到,這句代碼出現了最多次,且每次出現只是修改了xpath的內容,也就是說,這句重點代碼的重點內容在於怎麼找這個xpath,其餘的只要copy就行了。
find = input(&39;)url = &39;+find+&39;from selenium import webdriverfrom selenium.webdriver.support.ui import Selectfrom selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get(url)driver.maximize_window()driver.implicitly_wait(10)for i in range(51,56): driver.implicitly_wait(10) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;save-results-panel-trigger&39;)).click().perform() Select(driver.find_element_by_xpath(&34;save-action-selection&39;)).select_by_visible_text(&34;) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;save-action-format&39;)).click().perform() Select(driver.find_element_by_xpath(&39;)).select_by_visible_text(&34;) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;save-action-panel-form&39;)).click().perform() target =driver.find_element_by_xpath(&34;search-results&39;) driver.execute_script(&34;, target) ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;search-results&39;)).click().perform() ActionChains(driver).move_to_element(driver.find_element_by_xpath(&34;search-page&39;)).click().perform() print(&39;+str(i)+&39;) print(&39;+str(i+1)+&39;)driver.quit()print(&39;)
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。
以上文章來源於英語公主 ,作者 Ldq