Python爬蟲、數據分析、網站開發等案例教程視頻免費在線觀看
https://space.bilibili.com/523606542
Python學習交流群:1039649593
元素提取
通過selenium的基本使用可以簡單定位元素和獲取對應的數據,接下來我們再來學習下定位元素的方法
find_element_by_id #(根據id屬性值獲取元素) find_element_by_name #(根據標簽的name屬性) find_element_by_class_name #(根據類名獲取元素) find_element_by_link_text #(根據標簽的文本獲取元素,精確定位) find_element_by_partial_link_text#(根據標簽包含的文本獲取元素,模糊定位) find_e1ement_by_tag_name #(根據標簽名獲取元素) find_e1ement_by_xpath #(根據xpath獲取元素) find_element_by_css_selector #(根據css選擇器獲取元素)
上述方法只能查找頁面某個標簽元素,如果想獲取多個元素可以在element后加字母s,如下所示:
find_elements_by_id #(根據id屬性值獲取元素,返回一個1ist列表) find_elements_by_name #(根據標簽的name屬性,返回一個1ist列表) find_elements_by_class_name #(根據類名獲取元素,,返回一個list列表) find_elements_by_link_text #(根據標簽的文本獲取元素,精確定位,返回一個1ist列表) find_elements_by_partial_link_text #(根據標簽包含的文本獲取元素,模糊定位,返回一個1ist列表) find_elements_by_tag_name #(根據標簽名獲取元素,返回一個1ist列表) find_elements_by_xpath #(根據xpath獲取元素,返回一個1ist列表) find_elements_by_css_selector #(根據css選擇器獲取元素,返回一個1ist列表)
案例:
以豆瓣首頁為例:https://www.douban.com/
from selenium import webdriver #1.創建瀏覽器-->對象 driver = webdriver.chrome() # 2.發送請求 driver.get("https://www.douban.com//") #3.獲取標簽<id,class> #3.1 通過標簽的id值獲取標簽anonv-nav result1 = driver.find_element_by_id("anony-nav") #對象print(result1) # 3.2根據標簽的name屬性值獲取標簽 result2 = driver.find_element_by_name( ' description ' ) print(result2) #3.3通過標簽的c1ass屬性值獲取標簽 result3 = driver.find_element_by_class_name( ' anony-nav-7inks ' ) print(result3) # 3.4通過標簽包裹的文本'下載豆瓣App'獲取元素列表(精確定位) resu1t4 = driver.find_element_by_link_text("下載豆瓣App") print(result4) #3.5通過標簽包裹的文本"豆瓣",獲取元素的列表(模糊定位) result5 = driver.find_element_by_partial_link_text("豆瓣") print(result5) # 3.6通過標簽名獲取元素列表 result6 = driver.find_element_by_tag_name("div") print(result6) #3.7 通過xpath獲取左上角豆瓣圖片的<a>標簽 result7 = driver.find_element_by_xpath('/ /*[@id="anony-nav"]/h1/a') print(result7) #3.8 通過css選擇器獲取左上角豆瓣圖片的<a>標簽 result8 = driver.find_element_by_css_selector(' #anony-nav > h1 > a') print(result8) input() driver.close()
一般提取到頁面元素,無非就是獲取元素包含的文本內容或者元素的屬性值,當你通過上述元素提取的方法獲取元素以后,可以通過如下方法及屬性,獲取元素包含的文本以及元素指定的屬性值:
send_keys('需要在輸入框輸入的字符串')#向輸入框輸入數據 click() # 執行點擊操作 text #獲取元素包含的文本內容 get_attribute( '屬性名')#獲取元素的屬性值
案例如下:
from selenium import webdriver driver = webdriver. Chrome() driver.get("https://www.douban.com/ ") #通過xpath獲取左上角豆瓣圖片的<a>標簽,提取標簽包含的文本內容 """ text屬性,可以提取標簽包含的文本內容,支持鏈式調用 """ result = driver.find_element_by_xpath('/ /*[@id="anony-nav"]/h1/a' ).text print(result) #通過xpath獲取左上角豆瓣圖片的<a>標簽,提取標簽的href屬性 """ get_attri bute('屬性名') 方法,可以根據屬性名提取標簽對應該屬性的值,支持鏈式調用 "" resu1t2 = driver.find_element_by_xpath( '//*[@id="anonynav"]/h1/a ').get_attribute('href' ) print(result2) driver.find_element_by_css_selector('#anony-nav>div.anony-srh>form>span.inp>input[type=text]') #找到豆瓣的搜索框,輸入關鍵字"肖申克的救贖",點擊搜索 """ send_keys('需要在輸入框輸入的字符串')# 向輸入框輸入數據 click()#執行點擊操作 """ input_str = driver.find_element_by_css_selector('#anony-nav>div.anony-srh>form>span.inp>input[type=text]') input_str.send_keys('肖申克的救贖') input_click = driver.find_element_by_css_selector('#anony-nav>div.anony-srh>form>span.bn>input[type=submit] ') input_click.click() input() driver.quit()