Python爬蟲基礎講解(十四):初探selenium——元素提取


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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM