# author:nimo_ding
'''selenium 是真實的模擬人操作瀏覽器,需要等待網頁緩衝的時間.
在爬取大量資料時就會比較慢,這是它的缺點。
通常在爬蟲專案中,selenium都是用在其他方法無法解決或很難解決問題的時候才會用到。
學習文件:
靜態網頁:
html源**與渲染完成的elements源**一樣。
動態網頁:
比如qq**,要爬取的資料不在html源**中,而是在json中,那就不能直接使用**的url了,
需要找到json資料的真實url。
不論資料存在**,瀏覽器總是在向伺服器發起各式各樣的請求,當這些請求完成後,
它們會一起組成開發者工具的elements中所展示的,渲染完成的網頁源**。
安裝瀏覽器的驅動:
前面我們用beautifulsoup解析網頁源**,然後提取其中的資料。
selenium庫同樣也具備解析資料、提取資料的能力,
兩者的不同即是:
selenium所解析提取的,是elements中的所有資料,
而beautifulsoup所解析的則只是network中第0個請求的響應。
用selenium開啟網頁,所有資訊都載入到了elements那裡,之後就可以把動態網頁用靜態網頁的方法提取了。
'''import time
from selenium import webdriver # 從selenium庫中呼叫webdriver模組
driver = webdriver.chrome() # 設定引擎為chrome,真實的開啟乙個chrome瀏覽器。
# 為你開啟指定的url。
driver.get('')
time.sleep(2)
# 如下是解析和提取資料的一些方法:
# 解析網頁並提取第乙個label標籤中的文字,通過元素名稱
label = driver.find_element_by_tag_name('label')
print(type(label))
print(label.text)
# 提取多個標籤elements
labels = driver.find_elements_by_tag_name('label')
print(type(labels))
for i in labels:
print(i.text)
# 通過元素的class屬性選擇
label1 = driver.find_element_by_class_name('teacher')
print(label1.get_attribute('type'))
# 通過元素的id選擇:
label2 = driver.find_element_by_id('h1')
print(label2.text)
# 通過元素的name屬性選擇:
print(driver.find_element_by_name('form1'))
# 例如你好,蜘蛛俠!
# 可以使用find_element_by_link_text('你好,蜘蛛俠!')
# 例如你好,蜘蛛俠!
# 可以使用find_element_by_partial_link_text('你好')
# 獲取selenium渲染出的完整的網頁源**方式:
# html =driver.page_source
# print(html) # 這裡獲取到的是字串格式的網頁源**,可以用beautifulsoup來解析和提取資料了。
driver.close() # 關閉瀏覽器驅動。
selenium提取資料的方法總結
總結下selenium提取資料的幾種方法 1.通過元素標籤名提取 driver.find element by tag name 2.通過元素class屬性 driver.find element by class name 3.通過元素id屬性 driver.find element by id ...
02 解析和提取網頁中的資料
beautifulsoup解析資料的用法 bs物件 beautifulsoup 要解析的文字,解析器 在括號中,要輸入兩個引數,第0個引數是要被解析的文字,它必須是字串 括號中的第1個引數用來標識解析器 html.parser 並不唯一 提取資料 仍然使用beautifulsoup來提取資料。這一步...
Python爬蟲之資料解析和提取
獲取資料之後需要對資料進行解析和提取,需要用到的庫是beautifulsoup,需要在終端安裝 pip install beautifulsoup4 1 解析資料 bs物件 beautifulsoup 要解析的文字 解析器 解析器我們一般用python的內建庫 html.parser 示例 impo...