Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

如果學會了python的基本語法,我認為入門爬蟲是很容易的。


Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏


1:什麼是爬蟲

爬蟲(spider,又網絡爬蟲),是指向網站/網絡發起請求,獲取資源後分析並提取有用數據的程序。

從技術層面來說就是 通過程序模擬瀏覽器請求站點的行為,把站點返回的HTML代碼/JSON數據/二進制數據(圖片、視頻) 爬到本地,進而提取自己需要的數據,存放起來使用。

<code>非誠勿擾:正在學習python的小夥伴或者打算學習的,可以私信小編“01”領取資料!/<code>

2:入門爬蟲的乾貨

2.1: 爬蟲的基本思路

  • 通過URL或者文件獲取網頁,
  • 分析要爬取的目標內容所在的位置
  • 用元素選擇器快速提取(Raw) 目標內容
  • 處理提取出來的目標內容 ( 通常整理合成一個 Json)
  • 存儲處理好的目標內容 (比如放到 MongoDB 之類的數據庫,或者寫進文件裡。)
Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

robots協議:網站通過 Robots 協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取,但它僅僅是道德層面上的約束

爬蟲的用途:

1、12306搶票

2、短信轟炸

3、網絡投票

4、監控數據

5、下載圖片、小說、視頻、音樂等

Http和Https:

發送請求,獲取響應的過程其實就是發送Http或者Https請求和響應的過程。

HTTP

超文本傳輸協議

默認端口號:80

HTTPS

HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協議

默認端口號:443

作用:在傳輸過程中對數據進行加密,防止被竄改

區別:http因不需要加密,所以性能更高,但安全性差。https安全性高,但是佔用服務器資源

但是Https是未來的主流,比如小程序、ios、android客戶端的接口都需要Https接口支持

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

常見請求頭:

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

Http狀態碼

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

常見的 HTTP 狀態碼:

200 - 請求成功

301 - 資源(網頁等)被永久轉移到其它 URL

404 - 請求的資源(網頁等)不存在

500 - 內部服務器錯誤

Chrome瀏覽器請求分析

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

分析流程圖:

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

以上都是爬蟲的預備知識,掌握了之後就可以寫代碼去爬取我們想要爬的網站了。Python提供了許多網絡請求的庫,比如Requests、urllib等,這裡只說一下requests庫

Requests庫

安裝:pip(3) install requests

基本使用:

<code># 導入模塊
import requests
# 定義請求地址
url = 'http://www.baidu.com'
# 發送 GET 請求獲取響應
response = requests.get(url)
# 獲取響應的 html 內容
html = response.text/<code>

response常用屬性:

  • response.text 返回響應內容,響應內容為 str 類型
  • respones.content 返回響應內容,響應內容為 bytes 類型
  • response.status_code 返回響應狀態碼
  • response.request.headers 返回請求頭
  • response.headers 返回響應頭
  • response.cookies 返回響應的 RequestsCookieJar 對象
<code># 獲取字節數據
content = response.content
# 轉換成字符串類型
html = content.decode('utf-8')/<code>

自定義請求頭

<code># 導入模塊
import requests

# 定義請求地址
url = 'http://www.baidu.com'
# 定義自定義請求頭
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 發送自定義請求頭
response = requests.get(url,headers=headers)
# 獲取響應的 html 內容
html = response.text/<code>

發送Get請求

<code># 導入模塊
import requests
# 定義請求地址
url = 'http://www.baidu.com/s'
# 定義自定義請求頭
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 定義 GET 請求參數
params = {
"kw":"hello"
}
# 使用 GET 請求參數發送請求
response = requests.get(url,headers=headers,params=params)
# 獲取響應的 html 內容
html = response.text/<code>

發送POST請求

<code># 導入模塊
import requests
# 定義請求地址
url = 'http://www.baidu.com'
# 定義自定義請求頭

headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 定義post請求參數
data = {
"kw":"hello"
}

# 使用 POST 請求參數發送請求
response = requests.post(url,headers=headers,data=data)
# 獲取響應的 html 內容
html = response.text/<code>

使用代理

為什麼使用代理:1、讓服務器以為請求是從多個客戶端發出的。2、防止暴露我們的真實地址

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

使用方法

<code># 導入模塊
import requests
# 定義請求地址
url = 'http://www.baidu.com'
# 定義自定義請求頭
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
# 定義 代理服務器
proxies = {
"http":"http://IP地址:端口號",
"https":"https://IP地址:端口號"
}
# 使用 POST 請求參數發送請求
response = requests.get(url,headers=headers,proxies=proxies)
# 獲取響應的 html 內容
html = response.text/<code>

請求中攜帶cookie

作用:有些網站需要登錄,這時候cookie就是記錄了你的用戶信息

方式:

  • 直接在自定義請求頭中攜帶
  • 通過請求參數攜帶cookie
<code># 導入模塊 

import requests
# 定義請求地址
url = 'http://www.baidu.com'
# 定義自定義請求頭
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
# 方式一:直接在請求頭中攜帶Cookie內容
"Cookie": "Cookie值"
}
# 方式二:定義 cookies 值
cookies = {
"xx":"yy"
}
# 使用 POST 請求參數發送請求
response = requests.get(url,headers=headers,cookies=cookies)
# 獲取響應的 html 內容
html = response.text/<code>

數據提取

作用:從爬蟲獲取的數據中提取出我們想要的數據方式:

  • json模塊提取
  • xpath提取
  • 正則提取
  • beautifulsoup

json

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式

  • json.loads json字符串 轉 Python數據類型
  • json.dumps Python數據類型 轉 json字符串
  • json.load json文件 轉 Python數據類型
  • json.dump Python數據類型 轉 json文件
    ensure_ascii=False 實現讓中文寫入的時候保持為中文
    indent=空格數 通過空格的數量進行縮緊

xpath

XPath 全稱: XML Path Language,是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。安裝:pip(3) install lxml

常用規則

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

正則

Python中通過正則表達對字符串進行匹配是,可以使用re模塊

<code> # 導入re模塊
import re

# 使用match方法進行匹配操作
result = re.match(正則表達式,要匹配的字符串)

# 如果上一步匹配到數據的話,可以使用group方法來提取數據
result.group()/<code>

常見語法

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

Python爬蟲入門,5分鐘瞭解思路,這是最簡單的基礎教學快來收藏

結尾

最後多說一句,小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後臺私信小編:“學習”即可領取


分享到:


相關文章: