Python爬蟲入門,5分鐘瞭解思路。

1、什麼是爬蟲

爬蟲(spider,又網絡爬蟲),是指向網站/網絡發起請求,獲取資源後分析並提取有用數據的程序。 從技術層面來說就是 通過程序模擬瀏覽器請求站點的行為,把站點返回的HTML代碼/JSON數據/二進制數據(圖片、視頻) 爬到本地,進而提取自己需要的數據,存放起來使用。

2、入門爬蟲的乾貨

爬蟲的基本思路

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

robots協議:

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

爬蟲的用途

  • 1、12306搶票
  • 2、短信轟炸
  • 3、網絡投票
  • 4、監控數據
  • 5、下載圖片、小說、視頻、音樂等

Http和Https:

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

<code>HTTP 超文本傳輸協議 默認端口號:80

HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協議
默認端口號:443
作用:在傳輸過程中對數據進行加密,防止被竄改
區別:http因不需要加密,所以性能更高,但安全性差。https安全性高,但是佔用服務器資源

/<code>

但是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 install requests

基本使用:

<code># 導入模塊
import requests
# 定義請求地址

url = 'http://www.baidu.com'
# 發送 GET 請求獲取響應
response = requests.get(url)
# 獲取響應的 html 內容
html = response.text
/<code>

response常用屬性:

<code>response.text 返回響應內容,響應內容為 str 類型
respones.content 返回響應內容,響應內容為 bytes 類型
response.status_code 返回響應狀態碼
response.request.headers 返回請求頭
response.headers 返回響應頭
response.cookies 返回響應的RequestsCookieJar 對象
/<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>

數據提取

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

方式:

<code>json模塊提取
xpath提取
正則提取
beautifulsoup
/<code>

json

<code>JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式
json.loads json字符串 轉 Python數據類型
json.dumps Python數據類型 轉 json字符串
json.load json文件 轉 Python數據類型
json.dump Python數據類型 轉 json文件

ensure_ascii=False 實現讓中文寫入的時候保持為中文
indent=空格數 通過空格的數量進行縮緊
/<code>

xpath

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

安裝:pip install lxml

常用路徑表達式

Python爬蟲入門,5分鐘瞭解思路。

正則

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

<code> # 導入re模塊 
import re
# 使用match方法進行匹配操作
result = re.match(正則表達式,要匹配的字符串)
# 如果上一步匹配到數據的話,可以使用group方法來提取數據
result.group()
/<code>

常見語法

Python爬蟲入門,5分鐘瞭解思路。

Python爬蟲入門,5分鐘瞭解思路。

Python爬蟲入門,5分鐘瞭解思路。

是不是有點意猶未盡的趕腳?那就敬請期待下一次的內容吧~(ps:需要素材資源關注微信公眾號:編程小咖)


分享到:


相關文章: