Python入門爬蟲精要

2022-07-03 08:40:39 字數 3693 閱讀 5810

python爬蟲主要分為三大板塊:抓取資料,分析資料,儲存資料。

簡單來說,爬蟲要做就是通過指定的url,直接返回使用者所需資料,無需人工一步步操作瀏覽器獲取。

1.抓取資料

一般來說,訪問**url給我們返回兩種格式資料,html和json。

1) 無參

抓取資料的大多數屬於get請求,我們可以直接從**所在伺服器獲取資料。在python自帶模組中,主要有urllib及urllib2,requests等。

這裡以requests為例。

requests:

import requests

response = requests.get

(url)

content = requests.get

(url).content

content = requests.get

(url).json()

print

"response headers:

", response.headers

print

"content:

", content

2)帶參此外,還有一種是以帶參的形式抓取資料,引數一般附在url結尾,首個引數以"?"連線,後續參與以"&"連線

data = 

requests:data為dict,json

import requests

response = requests.get(url=url, params=data)

2.登入情況處理1) post表單登入先向伺服器傳送表單資料,伺服器再將返回的cookie存入本地。

data = 

requests:data為dict,json

import requests

response = requests.post(url=url, data=data)

2) 使用cookie登陸使用cookie登入,伺服器會認為你是乙個已登入使用者,會返回乙個已登入的內容。需要驗證碼的情況,我們可以考慮此方式解決。

import requests      

requests_session =requests.session()

response = requests_session.post(url=url_login, data=data)

3.反爬蟲機制處理我們知道,現在很多**都做了反爬蟲機制處理。

相信我們都遇到,當我們爬取某個**的時候,第一次爬取可以,第二次可以,第三次就報失敗了,會提示ip限制或者訪問過於頻繁報錯等。

針對於這種情況,我們有幾種方法解決。

1) 使用**

主要是用於"限制ip"位址情況,同樣也可以解決頻繁訪問需要驗證碼的問題。

我們可以維護乙個**ip池,網上可以查到很多免費的**ip,我們可以選擇我們所需要的。

proxies = 

requests:

import requests

response = requests.get(url=url, proxies=proxies)

2)時間限制解決頻繁訪問導致訪問受限問題。遇到這種情況很簡單,我們需要放緩兩次點選之間的頻率即可,加入sleep函式即可。

import time

time.sleep(

1)

3) 偽裝成瀏覽器訪問當我們看到一些爬蟲**的時候,會發現get請求會有headers頭,這是在偽裝瀏覽器訪問的反盜鏈。

一些**會檢查你是不是真的瀏覽器訪問,還是機器自動訪問的。這種情況,加上user-agent,表明你是瀏覽器訪問即可。

有時還會檢查是否帶referer資訊還會檢查你的referer是否合法,一般再加上referer。

headers =  # 偽裝成瀏覽器訪問,適用於拒絕爬蟲的**

headers =

headers =

requests:

response = requests.get(url=url, headers=headers)

4) 斷線重連可以參考兩種方法。

def multi_session(session, *arg):

retrytimes = 20

while retrytimes>0

:

try:

return session.post(*arg)

except:

retrytimes -= 1

def multi_open(opener, *arg):

retrytimes = 20

while retrytimes>0

:

try:

return opener.open(*arg)

except:

retrytimes -= 1

這樣我們就可以使用multi_session或multi_open對爬蟲抓取的session或opener進行保持。

4.多執行緒爬取

當我們爬取或者資料量過大,可以考慮使用多執行緒。這裡介紹一種,當然還有其他方式實現。

import multiprocessing as

mpdef func():

pass

p =mp.pool()

p.map_async(func)

# 關閉pool,使其不在接受新的(主程序)任務

p.close()

# 主程序阻塞後,讓子程序繼續執行完成,子程序執行完後,再把主程序全部關掉。

p.join()

5.分析一般獲取的伺服器返回資料主要有兩種,html和json。

html格式資料,可以採用beautifulsoup,lxml,正規表示式等處理

json格式資料,可以採用python列表,json,正規表示式等方式處理

此外,我們可以採用numpy, pandas,matplotlib,pyecharts等模組包做相應的資料分析,視覺化展示等。

6. 儲存

資料抓取,分析處理完後,一般我們還需要把資料儲存下來,常見的方式有存入資料庫,excel**的。根據自己需要選擇合適的方式,把資料處理成合適的方式入庫。

Unity Shader入門精要

學習資料 unity shader入門精要 時長 乙個月 計畫 1 2天完成一章,預計乙個月內完成 幾何階段 gpu實現,輸出螢幕空間的二位點座標,深度,著色資訊,傳送給光柵化階段 光柵化階段 gpu實現,決定每個渲染圖元哪些畫素應該被繪製在螢幕上,將幾何階段傳來的頂點資料進行插值 頂點v法線的獲取...

Python爬蟲入門

今天看了菜鳥教程的python教程,準備做個小作業寫個爬蟲程式。其中主要涉及到基本語法 正規表示式 urllib和re兩個模組。import urllib 載入模組 import re defgethtml url page urllib.urlopen url html page.read ret...

python爬蟲入門

這幾天閒的無聊想做乙個爬蟲來爬取一些 正經 首先選擇用python作為爬蟲的語言。但是沒有接觸過python怎麼辦呢,只能從頭開始學了。python學習位址這個是廖大神寫的乙個python入門,個人感覺寫的非常不錯,在粗略的學習了一遍之後感覺可以開始我的爬蟲之旅了。目標 抓取中妹子的儲存在本地 接下...