国产精品乱码在线观看av免-国产精品乱人伦一区二区三区-国产精品乱人无码av在线a-国产精品乱人一区二区三区-国产精品乱偷伦免费视频免费观看-国产精品乱子乱xxxx

您好,歡迎來到重慶城鄉網
 
用戶名: 密碼: 看不清楚請點擊刷新驗證碼 登錄/免費注冊   幫助中心
免費發布您的鄉村旅游、基地、農副產品等信息!免費開通網站
首頁 > IT常識 > 列表

Python使用Selenium自動進行百度搜索的實現

發布時間: 2023/3/10 16:48:38 人氣: 995
目錄安裝 Selenium寫代碼點位網頁元素

我們今天介紹一個非常適合新手的python自動化小項目,項目雖小,但是五臟俱全。它是一個自動化操作網頁瀏覽器的小應用:打開瀏覽器,進入百度網頁,搜索關鍵詞,最后把搜索結果保存到一個文件里。這個例子非常適合新手學習Python網絡自動化,不僅能夠了解如何使用Selenium,而且還能知道一些超級好用的小工具。

當然有人把操作網頁,然后把網頁的關鍵內容保存下來的應用一律稱作網絡爬蟲,好吧,如果你想這么爬取內容,隨你。但是,我更愿意稱它為網絡機器人。

我今天介紹的項目使用Selenium,Selenium 是支持 web 瀏覽器自動化的一系列工具和庫的綜合項目。Selenium 的核心是 WebDriver,這是一個編寫指令集的接口,可以在許多瀏覽器中互換運行。

閑言少敘,硬貨安排。

安裝 Selenium

可以使用 pip 安裝 Python 的 Selenium 庫:pip install selenium

(可選項:要執行項目并控制瀏覽器,需要安裝特定于瀏覽器的 WebDriver 二進制文件。

下載 WebDriver 二進制文件 并放入 系統 PATH 環境變量 中.)

由于本地瀏覽器版本升級,引起的版本不一致問題,和系統PATH環境變量的設置比較繁瑣,所以我使用webdriver_manager,

安裝 Install manager:

pip install webdriver-manager

寫代碼

引入模塊:

from selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keys

首先我們定義一個類Search_Baidu, 它主要用于初始化;定義自動化步驟的方法;結束關閉瀏覽器。

class Search_Baidu:def __init__(self):def search(self, keyword):def tear_down(self):

接下來我們分別介紹每個方法的實現過程。

def __init__(self): #類構造函數,用于初始化selenium的webdriver url = ’https://www.baidu.com/’ #這里定義訪問的網絡地址 self.url = url options = webdriver.ChromeOptions() options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加載圖片,加快訪問速度 options.add_experimental_option(’excludeSwitches’, [’enable-automation’]) # 此步驟很重要,設置為開發者模式,防止被各大網站識別出來使用了Selenium# 這里使用chrome瀏覽器,而且使用我們剛才安裝的webdriver_manager的chrome driver,并賦值上面的瀏覽器設置options變量 self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options) self.wait = WebDriverWait(self.browser, 10) #超時時長為10s,由于自動化需要等待網頁控件的加載,所以這里設置一個默認的等待超時,時長為10秒 def tear_down(self): self.browser.close() #最后,關閉瀏覽器

接下來是重頭戲,寫我們操作瀏覽器的步驟,打開瀏覽器,進入百度網頁,輸入搜索關鍵字:Selenium,等待搜索結果,把搜索結果的題目和網址保存到文件里。

def search(self, keyword): # 打開百度網頁 self.browser.get(self.url) # 等待搜索框出現,最多等待10秒,否則報超時錯誤 search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, ’//*[@id="kw"]’))) # 在搜索框輸入搜索的關鍵字 search_input.send_keys(keyword) # 回車 search_input.send_keys(Keys.ENTER) # 等待10秒鐘 self.browser.implicitly_wait(10) # 找到所有的搜索結果 results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text") # 遍歷所有的搜索結果 with open("search_result.txt","w") as file: for result in results: if result.get_attribute("href"): print(result.get_attribute("text").strip()) # 搜索結果的標題 title = result.get_attribute("text").strip() # 搜索結果的網址 link = result.get_attribute("href") # 寫入文件 file.write(f"Title: {title}, link is: {link} n")

點位網頁元素

這里頭有個關鍵點,就是如何點位網頁元素:

比如:

search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, ’//*[@id="kw"]’)))

還有:

self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")

打個比方,快遞員通過地址找到你家,給你送快遞,這里的XPATH和CSS Selector就是網頁元素的地址,那么如何得到呢?
第一個就是Chrome自帶的開發者工具,可以快捷鍵F12,也可以自己在下圖中找到:

Python使用Selenium自動進行百度搜索的實現

然后在百度搜索框,右鍵:

Python使用Selenium自動進行百度搜索的實現

找到輸入框的HTML元素,

在HTML元素右鍵,拷貝XPath地址。

Python使用Selenium自動進行百度搜索的實現

這是比較簡單的定位網頁元素的方法。接下來我們定位搜索結果元素的時候,就遇到了麻煩,如下圖:

Python使用Selenium自動進行百度搜索的實現

我們不能單獨的定位每個元素,而是要找到規律,一次把所有的搜索結果找到,然后返回一個list,我們好遍歷這個list,這個怎么實現呢?

接下來,我們請出一大神器:SelectorGadget

Python使用Selenium自動進行百度搜索的實現

SelectorGadget是一個CSS Selector生成器,大家可以在他的官方文檔找到具體的使用說明,我這里簡單介紹一下:
首先啟動SelectorGadget,點擊一下圖標

瀏覽器會出現下面的框框:

Python使用Selenium自動進行百度搜索的實現

然后我們在網頁用鼠標左鍵,點擊我們要定位的元素

Python使用Selenium自動進行百度搜索的實現

然后頁面會變成下面的樣子:

所有黃色的部分說明都被選擇了,如果我們不想要的元素,右鍵點擊,使它變為紅色,說明它被去掉了。如果沒有被選擇我們又需要的元素,我們左鍵選擇它,使它變為綠色。最后我們希望選擇的頁面元素都變成了綠色或者黃色,如下圖:

Python使用Selenium自動進行百度搜索的實現

我們就可以拷貝框框里的內容作為CSS Selector了。

Python使用Selenium自動進行百度搜索的實現

通過CSS Selector找到所有的搜索結果。

results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")

到此,我們就實現了這么個簡單的小應用了,其實selenium就是幫助我們自動操作網頁元素,所以我們定位網頁元素就是重中之重,希望本文給你帶來一點幫助。

下面我附上代碼:

from datetime import timefrom selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keysclass Search_Baidu: def __init__(self): url = ’https://www.baidu.com/’ self.url = url options = webdriver.ChromeOptions() options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加載圖片,加快訪問速度 options.add_experimental_option(’excludeSwitches’, [’enable-automation’]) # 此步驟很重要,設置為開發者模式,防止被各大網站識別出來使用了Selenium self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options) self.wait = WebDriverWait(self.browser, 10) #超時時長為10s def search(self, keyword): # 打開百度網頁 self.browser.get(self.url) # 等待搜索框出現,最多等待10秒,否則報超時錯誤 search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, ’//*[@id="kw"]’))) # 在搜索框輸入搜索的關鍵字 search_input.send_keys(keyword) # 回車 search_input.send_keys(Keys.ENTER) # 等待10秒鐘 self.browser.implicitly_wait(10) # 找到所有的搜索結果 results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text") # 遍歷所有的搜索結果 with open("search_result.txt","w") as file: for result in results: if result.get_attribute("href"): print(result.get_attribute("text").strip()) # 搜索結果的標題 title = result.get_attribute("text").strip() # 搜索結果的網址 link = result.get_attribute("href") # 寫入文件 file.write(f"Title: {title}, link is: {link} n") def tear_down(self): self.browser.close()if __name__ == "__main__": search = Search_Baidu() search.search("selenium") search.tear_down()


·上篇:電腦常識及技巧大全(關于計算機的一些基本知識)
·下篇:python實現自動化辦公郵件合并功能
還沒有對此評論!
評論
☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆
推薦游玩
重慶涪陵大木花谷內心怡農家主營:餐飲、休閑、觀光、娛樂等,農家樂設有住宿,能同時容納40人住宿
地址:重慶市涪陵區大木花谷內
人氣:4293    加入時間:2023-11-06      地區:【涪陵區
璧山很有情調的一個農場璧山本草傳說農場(民宿、農家樂),團建、野炊、住宿為一體的游玩場地
地址:璧山區正興鎮沙塝村四組
人氣:7524    加入時間:2023-04-13      地區:【壁山區
巴南云篆山知青山莊,體驗知青年代的回憶,會議娛樂一體
地址:重慶市巴南區云纂山風景區
人氣:8358    加入時間:2022-09-14      地區:【巴南區
巴南天星寺鎮花房筑·明院
地址:重慶市巴南區天星寺鎮花房村董上組
人氣:7378    加入時間:2022-06-22      地區:【巴南區
歌樂山上天池度假村度假游玩的好去處(農家樂)
地址:重慶市沙坪壩區歌樂山鎮天池村
人氣:10057    加入時間:2022-04-09      地區:【沙坪壩
巴南云篆山網紅打卡地徐掌柜北方部落民宿,等你來打卡!特色燒烤】二日游:特色坑烤2人+特色住宿1間(大
地址:重慶市巴南區魚洞云篆山一社24號
人氣:7191    加入時間:2021-08-28      地區:【巴南區
重慶沙坪壩歌樂山海石公園石林城堡燒烤:自助燒烤暢吃不限+景區游玩+機麻+植樹+甜點
地址:重慶市·沙坪壩區·中梁鎮·歌樂山北部環形山麓重慶海石公園
人氣:6893    加入時間:2021-08-26      地區:【沙坪壩
重慶江津區雨仙農谷民宿,農家樂酒店,水果采摘 | 蔬菜采摘 | 騎馬 | 插秧 | 摸魚
地址:江津區保坪村雨仙農谷稻田設計師酒店
人氣:13452    加入時間:2021-08-18      地區:【江津區
巴南豐盛鎮彩色森林云山房鄉村藝術酒店
地址:重慶市·巴南區·豐盛鎮·重慶市巴南區豐盛鎮油房村茶山
人氣:5264    加入時間:2021-07-29      地區:【巴南區
銅梁愛蓮湖度假酒店,土橋荷花園
地址:銅梁區·土橋鎮·慶林村20社(愛蓮湖濕地公園)
人氣:6449    加入時間:2021-07-29      地區:【銅梁區
  • 推薦閱讀
  • 推薦農業基地
主站蜘蛛池模板: 91免费在线观看| 99视频精品免费99在线| 天天色综合色| 国产一性一交一伦一A片小说| 日本成人免费观看| 无码高潮又爽又黄A片| 麻豆免费高清完整版| 国产偷拍一极视频| 63jjj全国最大| 纯肉1女多n男全文阅读| 免费视频大全集免费| 国产成人精品综合久久久软件| 精品在线观看一区| 波多野结衣久久精品| 久久国产精品久久国产精品| 久久久999国产精品| 免费无码又爽又刺激A片小说| 黄色在线网页| 最近免费韩国日本HD中文字幕| 精品国产一区二区三区四区阿崩| 美国一级毛片片aa久久综合| 日韩一卡二卡三卡四卡免费观在线 | 2024婷婷天堂综合区色吧| 欧美激情五月| 99热只有这里有精品| 香蕉99| 99精品久久精品一区二区| 国产乡下三级全黄三级| 伦理电影在线看| 国产精品人妻无码免费久久一| 欧美人妖| 嫩草影院地址一二三| 久久中文娱乐网| 欧美free嫩交hd| 免费视频网站在线观看黄| 日本护士xxxxx在线播放| 国产极品美女视频福利| 日本无码中文精品a8198v| 日本成人一区二区三区| 99日影院在线播放| a片地址|