天天看點

python使用selenium的webdriver解析網頁,擷取一個或者多個标簽,selenium擷取豆瓣資料以及selenium的元素定位類型使用背景注意點和小技巧簡單使用seleniumselenium擷取豆瓣資料以及selenium的元素定位類型

目錄

  • 使用背景
  • 注意點和小技巧
    • elements和element的差別
    • 使用selenium的xpath方法的網頁快速複制
    • 無頭使用webdriver的方法:
  • 簡單使用selenium
  • selenium擷取豆瓣資料以及selenium的元素定位類型

使用背景

從效率來講,能用request子產品得到響應是最好的,但有時候使用request得到的東西并不是自己想要的東西(搞不定),或者說想解析但是比較複雜,在這種情況下就會使用selenium

注意點和小技巧

elements和element的差別

  • 使用element元素定位方法時,注意自己找到元素是多個值還是一個值,如果是多個值但隻寫了和element相關的文法,隻會輸出找到的第一個元素,注意element是否有s
# 擷取單個标簽
element = dr.find_element_by_id('s-top-left')

# 擷取多個标簽
element_a = dr.find_elements_by_css_selector('#s-top-left ')
           
python使用selenium的webdriver解析網頁,擷取一個或者多個标簽,selenium擷取豆瓣資料以及selenium的元素定位類型使用背景注意點和小技巧簡單使用seleniumselenium擷取豆瓣資料以及selenium的元素定位類型

使用selenium的xpath方法的網頁快速複制

  • 使用selenium的xpath方法時,可以直接複制網頁中的元素,簡單快捷方法為:選中元素,右鍵——copy——copy Xpath,輸入好方法後,直接複制
# 添加前
element_x = dr.find_elements_by_xpath('')
# 添加後
element_x = dr.find_elements_by_xpath('//*[@id="anony-time"]/div/div[3]/ul/li[4]/a[2]')
           
python使用selenium的webdriver解析網頁,擷取一個或者多個标簽,selenium擷取豆瓣資料以及selenium的元素定位類型使用背景注意點和小技巧簡單使用seleniumselenium擷取豆瓣資料以及selenium的元素定位類型
python使用selenium的webdriver解析網頁,擷取一個或者多個标簽,selenium擷取豆瓣資料以及selenium的元素定位類型使用背景注意點和小技巧簡單使用seleniumselenium擷取豆瓣資料以及selenium的元素定位類型

無頭使用webdriver的方法:

# 以下代碼可以使浏覽器取消可視化(即不彈出浏覽自動操作),簡稱“無頭浏覽器”
chrome_option = Options()
chrome_option.add_argument('--headless')
chrome_option.add_argument('--disable-gpu')

# options控制浏覽器是否可視化(即是否是無頭浏覽器)
dr = webdriver.Chrome(options=chrome_option)  # 切換至除qq輸入法以外的其他輸入法再運作
           

簡單使用selenium

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 建立浏覽器對象

# 以下代碼可以使浏覽器取消可視化(即不彈出浏覽自動操作),簡稱“無頭浏覽器”
# chrome_option = Options()
# chrome_option.add_argument('--headless')
# chrome_option.add_argument('--disable-gpu')

# options控制浏覽器是否可視化(即是否是無頭浏覽器)
dr = webdriver.Chrome()  # 切換至除qq輸入法以外的其他輸入法再運作

# 1 發送請求
dr.get('https://www.baidu.com/')
# 2 儲存快照
dr.save_screenshot('baidu1.png')
# jpg格式 和png差別 :png無損,jpg有損

# 3 檢視網頁代碼
# print(dr.page_source)

# 4 擷取标簽
element = dr.find_element_by_id('s-top-left')
# print(element)

# 擷取多個标簽
element_a = dr.find_elements_by_css_selector('#s-top-left a')
# print('element_a:',element_a)

# 5 擷取标簽包裹的内容
print(element_a[0].text)

# 6 擷取标簽的屬性
print('href:',element_a[2].get_attribute('href'))

# 7 關閉
# 退出目前頁面 不關閉浏覽器
dr.close()
# 關閉浏覽器
# dr.quit()
           

selenium擷取豆瓣資料以及selenium的元素定位類型

'''
id
class
name
text
取屬性的值
通過文本來擷取資料
模糊查找
'''

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 啟用無頭浏覽
option = Options()
option.add_argument('--headless')

# 啟動
dr = webdriver.Chrome(options=option)

url = 'https://www.douban.com/'
# 發送請求
dr.get(url)

# name
# element_name = dr.find_element_by_name('keywords')
# print(element_name)
# print(element_name.get_attribute('content'))

# id
# element_id = dr.find_elements_by_id('anony-nav')
# print(element_id)

# class_name
# element_class = dr.find_element_by_class_name('lnk-book')
# print(element_class.text)

# xpath 文法//@[]/div
# element_x = dr.find_elements_by_xpath('//*[@id="anony-time"]/div/div[3]/ul/li[4]/a[2]')
# print('======================\n')
# print(element_x[0].text)
# print(element_x[0].get_attribute('href'))

# 标簽
# element_tag = dr.find_elements_by_tag_name('h1')
# print('======================\n')
# print(element_tag)
# print(element_tag.get_attribute('href'))

# 通過text查找資料
# element_text = dr.find_element_by_link_text('豆瓣小組')
# print(element_text.get_attribute('href'))

# 模糊查找
element_re = dr.find_elements_by_partial_link_text('豆瓣')
print('======================\n')
# print(element_re)
print(len(element_re))
for name in element_re:
    print(name.text)