Anaconda的開發環境介紹以及簡單爬蟲的應用
開發環境的介紹
- anaconda
- 基於資料分析和機器學習的整合環境
- jupter
- anaconda提供的一個基於瀏覽器的視覺化開發工具
jupter的基本使用
- 在終端彙總錄入jupter notebook的指令啟動Jupter視覺化開發工具
- jupter notebook的指令錄入對應的預設的目錄結構就是終端對應的目錄結構
- new->text file :新建一個任意字尾名的文字檔案
- new->python 3 : 新建一個基於jupter的原始檔(xxx.ipynb)
- cell : jupter原始檔的一個編輯行
- cell 是可以分為兩種不同的模式:
- code:用來編寫和執行程式碼
- Markdown :編寫筆記
- 快捷鍵的使用
- 插入cell :a,b
- 刪除cell :x
- 執行cell :shift+enter
- 切換cell的模式:
- y :將Markdown模式的cell切換到code模式
- m :將code切換成Markdown
- 開啟幫助文件:
- shift+tab
爬蟲的相關概念
- 爬蟲:就是通過編寫程式,讓其模擬瀏覽器上網,然後去網際網路上抓取資料的過程
- 模擬:瀏覽器就是一款天然的爬蟲工具
- 抓取:抓取一整張資料,抓取一整張資料中的區域性資料
- 爬蟲的分類:
- 通用爬蟲:(資料的爬取)
- 抓取一整張頁面原始碼資料
- 聚焦爬蟲:(資料解析)
- 抓取區域性的指定資料。是建立在通用爬蟲基礎之上的!
- 增量式爬蟲:(資料的更新)
- 監測網站資料更新的情況!抓取網站最新更新出來的資料
- 分散式爬蟲:
- 通用爬蟲:(資料的爬取)
- 反爬機制:
- 一些網站後臺會設定相關的機制阻止爬蟲程式進行資料的爬取。這些機制是網站後臺設定的反爬機制。
- 反反爬策略
- 爬蟲需要制定相關的策略破解反爬機制,從而可以爬取到網站的資料。
- 第一個反爬機制:
- robots協議是一個存在於伺服器的一個文字協議。指明瞭該網站中哪些資料可以爬取,哪些不可以爬取
requests模組
- urllib模組:基於模擬瀏覽器上網的模組。網路請求的模組
- requests模組:基於網路請求的模組
- 作用:模擬瀏覽器上網
- requests模組的編碼流程:
- 指定url
- 發起請求
- 獲取響應資料(爬取到的資料)
- 持久化儲存
# 匯入requests包
import requests
# 1.爬取搜狗首頁的頁面原始碼資料
url = 'https://www.sogou.com/'
response = requests.get(url=url)
page_text = response.text # text返回的是字串形式的響應資料
with open('./sogou.html','w',encoding='utf-8') as fp:
fp.write(page_text)
# 2.簡易的網頁採集器
# 設計到的知識點:引數動態化,UA偽裝,亂碼的處理
word = input('enter a key word:')
url = 'https://www.sogou.com/web'
# 引數動態化:將請求引數封裝成欄位作用到get方法的params引數中
params = {
'query':word
}
response = requests.get(url=url,params=params)
page_text = response.text
fileName = word+'.html'
with open(fileName,'w',encoding='utf-8') as fp:
fp.write(page_text)
print(word,'下載成功!')
以上程式碼通過輸入搜尋的關鍵詞,效果圖如下:
回到資料夾所在位置,可以看到剛才爬取的網頁,開啟後看到的效果如下:
- 上述程式碼出現的問題:
- 亂碼問題
- 爬取資料丟失
那麼下面是對亂碼的處理:
# 亂碼處理
word = input('enter a key word:')
url = 'https://www.sogou.com/web'
# 引數動態化:將請求引數封裝成欄位作用到get方法的params引數中
params = {
'query':word
}
response = requests.get(url=url,params=params)
# 可以修改響應資料的編碼
response.encoding = 'utf-8' # 手動修改了響應物件的編碼格式
page_text = response.text
fileName = word+'.html'
with open(fileName,'w',encoding='utf-8') as fp:
fp.write(page_text)
print(word,'下載成功!')
處理完亂碼後,但是還是沒有出現想要的效果
- 什麼叫異常的訪問請求?
- 在爬蟲中正常的訪問請求指的是通過真實的瀏覽器發起的訪問請求。
- 異常的訪問請求:通過非瀏覽器發起的請求。(爬蟲程式模擬的請求傳送)
- 正常的訪問請求和異常的訪問請求的判別方式是什麼?
- 是通過請求頭中的User-Agent判別。
- User-Agent:請求載體的身份標識
- 目前請求的載體可以是:瀏覽器,爬蟲
- 反爬機制:
- UA檢測:網站後臺會檢測請求載體的身份標識(UA)是不是瀏覽器
- 是:正常的訪問請求
- 不是:異常的訪問請求
- 反反爬策略:
- UA偽裝:
- 將爬蟲對於的請求載體身份標識偽裝/篡改成瀏覽器的身份標識
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
- UA偽裝:
import requests
# UA偽裝
word = input('enter a key word:')
url = 'https://www.sogou.com/web'
# 引數動態化:將請求引數封裝成欄位作用到get方法的params引數中
params = {
'query':word
}
# UA偽裝
headers = {
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
# 將偽裝的UA作用到了請求的請求頭中
response = requests.get(url=url,params=params,headers=headers)
# 可以修改響應資料的編碼
response.encoding = 'utf-8' # 手動修改了響應物件的編碼格式
page_text = response.text
fileName = word+'.html'
with open(fileName,'w',encoding='utf-8') as fp:
fp.write(page_text)
print(word,'下載成功!')
總結
- 總結:
- get方法的引數:
- url
- params
- headers
- get方法的返回值:
- response - response的屬性:
- text :字串形式的響應資料
- get方法的引數:
相關文章
- python爬蟲:爬蟲的簡單介紹及requests模組的簡單使用Python爬蟲
- ReactJs環境配置簡單介紹ReactJS
- Disruptor的簡單介紹與應用
- arguments的應用示例簡單介紹
- Flash開發環境簡介開發環境
- 簡單介紹python虛擬環境 virtualenv的使用Python
- Java/JavaWeb/開發環境介紹JavaWeb開發環境
- 軟體開發常用結構以及SSM框架的簡單介紹SSM框架
- 雲管平臺的作用以及應用行業簡單介紹行業
- 爬蟲介紹爬蟲
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- Linux搭建Scrapy爬蟲整合開發環境Linux爬蟲開發環境
- Lucene介紹及簡單應用
- 簡單的爬蟲程式爬蟲
- 爬蟲開發python工具包介紹 (2)爬蟲Python
- 通用新聞爬蟲開發系列(專案介紹)爬蟲
- 簡單介紹Linux環境變數檔案Linux變數
- 網路爬蟲(四)Opener與Handler的介紹和例項應用爬蟲
- 簡單的介紹伺服器和Ajax的應用伺服器
- Android開發環境中的概念和工具介紹Android開發環境
- Kotlin on Android 開發環境介紹KotlinAndroid開發環境
- 常見的反爬蟲措施與應對方法介紹爬蟲
- gRPC應用實戰:(二)gRPC環境搭建以及簡單demoRPC
- RPC模式的介紹以及簡單的實現RPC模式
- match函式簡單介紹以及與index函式結合應用函式Index
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- 簡單建立VC + DDK的驅動開發環境開發環境
- 介紹一個能開發簡單SAP UI5應用的線上IDE:StackBlitzUIIDE
- 誰說爬蟲只能Python?看我用C#快速簡單實現爬蟲開發和演示!爬蟲PythonC#
- 通俗易懂的生產環境Web應用架構介紹Web應用架構
- 介紹RAC環境中的應用程式部署——RAC部署和效能
- iOS開發 iOS9 Spotlight 應用內搜尋簡單介紹iOS
- 簡單介紹python中的mock介面開發PythonMock
- 爬蟲與反爬蟲技術簡介爬蟲
- 簡單的 Selenium 爬蟲應用及定時桌面提示圖示爬蟲
- Python 開發簡單爬蟲 (學習筆記)Python爬蟲筆記
- 《Python開發簡單爬蟲》實踐筆記Python爬蟲筆記
- 開源JAVA單機爬蟲框架簡介,優缺點分析Java爬蟲框架