先來一張圖說明:
**反爬蟲方式
一、通過user-agent來控制訪問:
無論是瀏覽器還是爬蟲程式,在向伺服器發起網路請求的時候,都會發過去乙個標頭檔案:headers, 表明身份
對於爬蟲程式來說,最需要注意的字段就是:user-agent
很多**都會建立 user-agent白名單,只有屬於正常範圍的user-agent才能夠正常訪問。
解決方法:
可以自己設定一下user-agent,或者更好的是,可以從一系列的user-agent裡隨機挑出乙個符合標準的使用
二、通過js指令碼來防止爬蟲:
*他會通過js**生成一大段隨機的數字,然後要求瀏覽器通過js的運算得出這一串數字的和,再返回給伺服器.
解決方法: 使用phantomjs
*phantomjs是乙個python包,他可以在沒有圖形介面的情況下,完全模擬乙個」瀏覽器「,js指令碼驗證什麼的再也不是問題了。
三、通過ip限制來反爬蟲:
如果乙個固定的ip在短暫的時間內,快速大量的訪問乙個**,那自然會引起注意,管理員可以通過一些手段把這個ip給封了,爬蟲程式自然也就做不了什麼了。
解決方法:
def get_ip_poll():
'''模擬**池
返回乙個字典型別的鍵值對,
四、通過robots.txt來限制爬蟲:
世界上做爬蟲最大最好的就是google了,搜尋引擎本身就是乙個超級大的爬蟲,google開發出來爬蟲24h不間斷的在網上爬取著新的資訊,並返回給資料庫,但是這些搜尋引擎的爬蟲都遵守著乙個協議:robots.txt
robots.txt(統一小寫)是一種存放於**根目錄下的ascii編碼的文字檔案,它通常告訴網路搜尋引擎的漫遊器(又稱網路蜘蛛),此**中的哪些內容是不應被搜尋引擎的漫遊器獲取的,哪些是可以被漫遊器獲取的。因為一些系統中的url是大小寫敏感的,所以robots.txt的檔名應統一為小寫。robots.txt應放置於**的根目錄下。如果想單獨定義搜尋引擎的漫遊器訪問子目錄時的行為,那麼可以將自定的設定合併到根目錄下的robots.txt,或者使用robots元資料(metadata,又稱元資料)。robots.txt協議並不是乙個規範,而只是約定俗成的,所以並不能保證**的隱私。注意robots.txt是用字串比較來確定是否獲取url,所以目錄末尾有與沒有斜槓「/」表示的是不同的url。robots.txt允許使用類似"disallow: *.gif"這樣的萬用字元[1][2]。當然在特定情況下,比如說我們爬蟲的獲取網頁的速度,和人類瀏覽網頁是差不多的,這並不會給伺服器造成太大的效能損失,在這種情況下,我們是可以不用恪守 robots協議的。
Python爬蟲分享
一 python簡介 二 python爬蟲 三 python爬蟲例項 四 問答互動 python語言排行 github爬蟲排行 python為什麼這麼火?1989年,guido van rossum創立了python語言。現在,他在google工作。物件導向的高層語言 解釋性 強大的第三方庫 爬蟲,...
Python技術分享
python技術分享 來自於 黑夜路人 分享一下一些py的技術點 python 各個框架工具介紹 web開發框架 tornado 推薦,官網 bottle 一般,官網 flask 一般,官網 相關文件 web模板引擎 jinja 2 推薦,速度快,語法易用,官網 mako 一般,速度看,語法不易用,...
python 個人爬蟲實戰
from bs4 import beautifulsoup from urllib import request import pandas as pd import time from datetime import datetime head 如需使用cookie登入,將cookie位址傳入he...