【一塊兒學爬蟲】爬蟲基本原理

#什麼是爬蟲 請求網站,提取網頁內容的最大化程序。獲取到的是html代碼,須要從這些文本中提取須要的數據html

  1. 發起請求:

向目標站點發送HTTP請求,即發送一個Request,請求能夠包括額外的header等信息,等待服務器響應java

2.獲取響應內容python

若是服務器正常,在第一步會返回一個response,response的內容即是所要獲取的頁面內容,類型可能有HTML,Json字符串、二進制數據(如圖片視頻)等類型。git

3.解析內容github

獲得的內容多是HTML。可使用正則表達式、網頁解析庫進行解析。若是是json,則能夠直接解析爲json對象進行解析;若是是二進制數據,能夠保存或者進一步的處理。web

4.保存數據:面試

能夠存爲文本,也能夠保存到數據庫或者特定格式的文件正則表達式

#request和response chrome

爬蟲

#request中包含什麼? 數據庫

request.png

response中包含哪些東西?

response.png

#爬蟲能夠抓取什麼樣的數據?

內容.png

#獲取到數據後,如何解析?

解析.png

#注意: 使用request.get('url')獲得的只是第一個請求的內容,即當咱們執行:

import requests
response = requests.get('http://www.weibo.com')
print(response.text)#打印出的是第一個請求返回的代碼
複製代碼

即返回的是下圖中紅色方框中的代碼:

微博.png

抓取到的數據和瀏覽器頁面不同?

原生的html是不包括任何信息的,頁面顯示的信息是經過後續的js調用後臺的接口拿到數據,js再把網頁加載出來的。因此elements中的源代碼和咱們拿到的源代碼是不同的:

elements.jpg

如何解決這種JavaScript渲染問題?

  • 分析Ajax請求:Ajax請求返回的結果就是Json格式字符串
  • Selenium的WebDriver模擬或驅動一個瀏覽器網頁,自動化測試根據。案例以下:
#pip install selenium
from selenium import webdirver
driver = webdriver.Chrom();#自動打開chrome瀏覽器
driver.get('www.weibo.com')#瀏覽器頁面自動跳轉到指定網址
print(driver.page_source)#獲取到的源代碼和瀏覽器頁面的源代碼一致,這是渲染後的頁面源碼,js渲染的問題就不存在了。
複製代碼

這種方式的缺點是後臺會自動運行chrome瀏覽器

  • Splash:和Selenium同樣,都是用來模擬js渲染,能夠是github上搜索,有詳細的文檔。
  • 另外還有使用:PyV八、Ghost.py等庫

###解決JavaScript渲染問題的方案總結

js渲染問題.png

#怎樣保存數據

  • 文本
  • 關係型數據庫
  • 菲關係型數據庫
  • 二進制文件

保存數據.png

資料分享

java學習筆記、10T資料、100多個java項目分享


歡迎關注我的公衆號【菜鳥名企夢】,公衆號專一:互聯網求職面經javapython爬蟲大數據等技術分享**: 公衆號**菜鳥名企夢後臺發送「csdn」便可免費領取【csdn】和【百度文庫】下載服務; 公衆號菜鳥名企夢後臺發送「資料」:便可領取5T精品學習資料**、java面試考點java面經總結,以及幾十個java、大數據項目資料很全,你想找的幾乎都有

掃碼關注,及時獲取更多精彩內容。(博主今日頭條大數據工程師)
相關文章
相關標籤/搜索