python3 網路爬蟲(一)反爬蟲之我見

2021-08-03 05:58:15 字數 1982 閱讀 5820

環境:python3.4

win7

框架:scrapy

首先,在此只講解基於scrapy的種種案例或者方法, 為啥。。。因為我只會用這個框架,所以請大家莫見笑

python3爬蟲的基礎知識就不多介紹了,有興趣的朋友可以去看看這位仁兄的部落格,內容非常的詳細:

關於反爬蟲,相信大家已經看過了網上很多文章了,但是都只是教了一些方法或者提供了一些乾貨,並沒有告訴你這些東西的利弊,那麼這一次我來簡單地講解一下在scrapy中如何反爬蟲,樓主也是個小菜鳥,很多東西都是基於自己的理解,所以寫的東西僅供參考,如果有錯,請大家多多指出,方便本人今後改正,好了,開始。

為什麼要知道如何反爬?

答:爬蟲,對於被爬的一方是殘酷的,你想想,人家辛辛苦苦獲取的資料,你寫**就獲取了,而且,爬蟲會給他人的伺服器帶來壓力,所以如果不是出於商業性,其實能不爬盡量就別去爬別人的**(出於商業性就能做這事? 那必然,你工作的時候你不去爬資料,不給公司盈利,誰來給你發工資?),但是為了養活自己,該爬還真的要爬,既然你會爬,人家就會反爬,根據ip訪問頻率等等手段讓你明白人家也不是吃素的; 不知道反爬,對自己來說也是可怕的,一旦被**發現你在爬取資料,封禁你的ip這都是正常手段,有的時候一些生活**的封禁,對大家的影響其實還是挺大的。

1、更變user-agent, 這一招是最基本的,成本也是最低的,為什麼這麼說,這個東西更改起來很容易,而且,網上user-agent很多,複製貼上不花錢。

接下來我們說如果更變user-agent,有兩個方法:

(1)在middleware.py中新增user-agent的中介軟體

(2)在setting.py裡中利用random,讓你每次的程式每次啟動時都使用乙個乙個user-agent

(3)**需要貼嗎,不知道會不會有人看。如果有需要貼,以後會貼的

2、在setting.py中設定: robotstxt_obey = false ,為什麼要這麼設定,可以參考這篇文件:

———以上三點都是最基本的,說實話,只要稍微多做幾個專案你就能對它們的用法心領神會,因此我們主要來說說剩下兩點,剩下兩點,才是爬蟲初學者最不能領會的:

4、設定ip更換 :設定ip更換,可以在middleware.py中寫乙個中介軟體,先獲取50到100個ip(當然你想獲取更多也行) ,然後在每次發出request時附帶乙個ip,實現ip更換,這樣的優點在於,你就可以在不危及到本機ip的前提下,對想要爬取的資料進行快速爬取(為什麼要說快速,接下來會說到),缺點在於對於一些小公司,頻寬有限的,你快速爬取大量資料意味著你一直佔據著網速,對於其他人的效率也會造成一些影響,可以說是殺敵一千,自損八百,當然,大公司就沒這顧慮了;當然還要說一點,**ip你可以選擇從****上買或者直接爬下來用,或者你自己有其他備用ip(這就太好了),如果是從****上買,一定要選乙個靠譜的,現在很多****雖然說**專業版,但是你買下來發現不少的也是失效ip,或者之前被人大量使用已經被相關**封禁,至於靠譜**,我也不知道,我偶爾用西刺,但是他們給我的感覺就是上面所說的話。

5、中國所講述的中庸之道:不快不慢,張弛有度才是真理,在第4點我們提到,使用**ip快速爬取**內容,為什麼說快速?這裡有點惡趣味,因為從****買的ip不貴,因此被封大家都不心疼,其次是**一般是通過ip訪問頻率來識別你是不是人為操作,更換ip,等於說你不是一直在用同乙個ip在做這件事,降低了被反爬的風險,然而這樣對於被爬的**是一種危害,對於你自己也是一種危害,因為正處於被封禁的ip去訪問**,返回值有可能是503,返回乙個錯誤頁可能會讓你的程式報錯然後停止,快速地爬取**,對**也是一種傷害。以上說了那麼多,其實就在說乙個道理:爬取頻率不要太快,同樣的:在setting.py中設定 download_delay 的值,一般設定為10s左右,個人感覺10s差不多了,乙個人操作乙個網頁10s,很符合情理,因此幾乎不會被抓到,雖然這樣爬取速度慢了點,但是說實在話,對於一家想節約資金成本又想獲得正確資料的小企業來說,是非常合適的!

本人第一次寫部落格,如這一行也沒多久,很多東西可能有些以偏概全,所以有錯誤希望大家能夠指出,謝謝大家,那麼,下一次,我們將會來說說,基於post和get請求來獲取被ajax渲染的動態資料,謝謝大家的收看,下次見

Python 3 網路爬蟲

python 原來還可以這樣玩 python爬蟲,破解有道翻譯介面引數 破解有道翻譯反爬蟲機制 python3網路爬蟲快速入門實戰解析 article details 78123502 python3網路爬蟲 五 python3安裝scrapy article details 60156205 py...

Python3 網路爬蟲 1

準備開始寫一些python3關於爬蟲相關的東西,主要是一些簡單的網頁爬取,給身邊的同學入門看。首先我們向網路伺服器傳送get請求以獲取具體的網頁,再從網頁中讀取html內容。python view plain copy print?coding utf 8 from urllib.request i...

初識Python3網路爬蟲

定義 網路爬蟲 web spider 又被稱為網頁蜘蛛,是一種按照一定的規則,自動地抓取 資訊的程式或者指令碼。爬蟲其實是通過編寫程式,模擬瀏覽器上網,然後讓其去網際網路上抓取資料的過程。爬蟲的價值 抓取網際網路上的資料,為我所用,有了大量的資料,就如同有了乙個資料銀行一樣,下一步就是如何將這些資料...