python网络爬虫学习笔记(6)动态网页抓取(一)知识
生活随笔
收集整理的這篇文章主要介紹了
python网络爬虫学习笔记(6)动态网页抓取(一)知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 網絡爬蟲學習筆記(2)
- 1 資料
- 2 筆記
- 2-1 動態抓取概述
- 2-2 通過瀏覽器審查元素解析真實網頁地址
- 2-3 網頁URL地址的規律
- 2-4 json庫
- 2-5 通過Selenium模擬瀏覽器抓取
網絡爬蟲學習筆記(2)
1 資料
- 《Python網絡爬蟲從入門到實踐》唐松,陳志銓。主要面向windows平臺下的python3。
2 筆記
2-1 動態抓取概述
在使用JavaScript時,很多內容并不會出現在HTML源代碼中,所以爬取靜態網頁的技術可能無法正常使用。因此,我們需要用到動態網頁抓取的兩種技術:通過瀏覽器審查元素解析真實網頁地址和使用selenium模擬瀏覽器的方法。
- 異步更新技術AJAX(Asynchronous Javascript And XML,異步JavaScript和XML),通過在后臺與服務器進行少量數據交換就可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下對網頁的某部分進行更新。例如百度搜索界面的皮膚:
- 爬取里面使用AJAX動態加載的內容的兩種方法:
(1)通過瀏覽器審查元素解析地址。
(2)通過Selenium模擬瀏覽器抓取。 - json數據直接打印顯得又多又亂,可以使用json庫提取想要的信息
2-2 通過瀏覽器審查元素解析真實網頁地址
2-3 網頁URL地址的規律
例如有些URL地址中有兩個特別重要的變量offset和limit,offset顯示本頁第一項是總的第幾項,limit表示每頁項目數。基于此,書中給了一個很好的例子(這個例子中,不同頁數的評論真實地址之間只體現在offset,所以才有page_str這個變量):
2-4 json庫
- 使用:
(1)引入json庫import json
(2)使用json.loads把字符串格式的響應體數據轉化為json數據json_date = json.load(req_1.text)
2-5 通過Selenium模擬瀏覽器抓取
使用本方法無需2-1的操作,直接用網頁網址即可
因此,這里介紹另一種方法,即使用瀏覽器渲染引擎。直接用瀏覽器在顯示網頁時解析HTML、應用CSS樣式并執行JavaScript的語句。
這個方法在爬蟲過程中會打開一個瀏覽器加載該網頁,自動操作瀏覽器瀏覽各個網頁,順便把數據抓下來。用一句簡單而通俗的話說,就是使用瀏覽器渲染方法將爬取動態網頁變成爬取靜態網頁。
我們可以用Python的Selenium庫模擬瀏覽器完成抓取。Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,瀏覽器自動按照腳本代碼做出單擊、輸入、打開、驗證等操作,就像真正的用戶在操作一樣。
- 安裝 pip install selenium
- 下載geckodriver,在環境變量的PATH中加入這個geckodriver的地址
- 要使用瀏覽器,可能會需要相應的driver,例如Chromedriver。關于Chromedriver的下載,可以參考這個博客:
ChromeDriver與Chrome版本對應參照表及ChromeDriver下載鏈接 - 上述內容的簡單例子:
- 書中給的例子仍舊是評論,在driver調用get()以后,driver.find_element_by_css_selector表示用CSS選擇器查找元素,找到class為bdy-inner的div元素;find_element_by_tag_name表示通過元素的tag尋找,意思是找到comment中的p元素。
具體增加代碼
檢查可以看到的內容
運行上述代碼,得到的結果是:“第35條測試評論” - 書中還提及單擊特定位置的方法:
使用driver.find_element_by_css_selector()(還有許多其他查找方法,這里只提這一種)找到該元素,然后使用.click()方法模擬單擊
- Selenium中通過find_element_by_xpath()和find_element_by_css_selector()查找比其他查找函數好一些。
- Selenium常見的操作元素方法·Clear清除元素的內容。·send_keys模擬按鍵輸入。·Click單擊元素。·Submit提交表單。
- 用Selenium控制瀏覽器加載的內容(火狐使用FirefoxProfile().set_preference()函數調整),可以加快Selenium的爬取速度,常用的方法有:
(1)控制CSS(用來控制頁面的外觀和元素放置位置的)的加載。
(2)控制圖片文件的顯示。
(3)控制JavaScript的運行。 - Selenium的官方網站
總結
以上是生活随笔為你收集整理的python网络爬虫学习笔记(6)动态网页抓取(一)知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件工程 第三章:类图
- 下一篇: websocket python爬虫_p