Pythonの基本ルーチンの爬虫類

爬虫類は何ですか?
また、ウェブクモの巣クローラと呼ばれ、蜘蛛の巣のインターネットのメタファー場合、クモは、その後、応答の内容に応じて、URLアドレスを要求することにより、スパイダー、クローラーがクロール、インターネット上でデータ収集を解析され
、応答がコンテンツであるかのような: HTML、構造解析DOM、マッチングまたは通常を分析するためのDOM、応答内容は、XML / JSONデータである場合には、データオブジェクトをオンにし、データを分析してもよいです。

役割とは何ですか?
効果的な爬虫類の手段によって収集されたバッチデータは、人件費を削減する有効なデータの量を向上させ、データがサポート業務/販売を与え、製品開発をスピードアップすることができます。

業界の状況
、今日の競争の激しいインターネット製品は、業界のほとんどは、データマイニング製品、競合製品、買収、必須のツールである大規模データ解析、のクローラー技術を使用し、多くの企業は、爬虫類のエンジニアの仕事を設定しています

正当性
表示データのフロントエンドであり、ページ上のバルククローリング情報、に開示されている手順を使用してクローラ。情報が完全に開いているので、それが合法です。実際には、ブラウザのように、ブラウザが応答を解析し、ページのコンテンツをレンダリングし、爬虫類は、応答内容は、所望のデータが保存されているキャプチャ解析します。

アンチ爬虫類
爬虫類が、これは私のpythonリソース共有qunに参加することができ、プロセスを理解していないコードの学習のpythonコード農家VS煙、農業の戦争である、完全に前方に、足のステップを停止することは困難である:855 、408893、学習に関連した映像素材は、開発ツールが共有する必要が
いくつかは、抗爬虫類を意味します。

有効な検出:キャリブレーション要求(ユーザエージェント、リファラ、署名付加インターフェイス、等)
暗室:IP /ユーザ要求の頻度の制限、または直接傍受
中毒:トランスクローラーハイレベルが傍受傍受することができないが一時的である、中毒リターン偽のデータは、競合製品の決定誤解を招く可能性が
... ...
クローラ基本ルーチン
基本的な流れの
ターゲットデータ
ソースアドレス
構造の解析
コンセプト達成するために
エンコードする外科医
の基本的な手段を
要求リミットブレイク
リクエストヘッダが提供され、例えば:useragant有効なクライアントは、
(実際の状況に応じて)要求の周波数を制御します
IPプロキシ
のhtml /クッキー/ JS解析から/暗号化パラメータ署名
亀裂が承認ログイン
ユーザーのCookie情報を取るために要求
亀裂コードに
簡単なコードは、図の読み取りコードを識別することができ、サードパーティのライブラリの
解析データ
HTML DOMが解析され
、通常のマッチングを、nはスルーですなど、クロールするデータと一致する表現:データの一部はhtmlタグではありませんが、HTMLの中の変数のjsスクリプトタグ
の構文解析HTML DOMサードパーティのライブラリを使用して、ライブラリには、のjqueryのクラス好む
データ列を
定期的にマッチ(使用シナリオ)
トランスフェクトされたJSON / XML解析オブジェクトの
Pythonのクローラ
P 爬虫類の利点を書きython
Pythonの構文を使用するように、習得が容易に簡単である
コミュニティ活動家、実装とよりを参照することができます
豊富な機能の多様するパック
パワー完了するために、少量のコードを
モジュールパッケージに関わる
要求を
urllibは
urllib2の
cookielib
マルチスレッド
スレッド
定期的な

JSONの解析
JSONの
HTML構文解析、DOM
pyquery
美しいスープの
操作ブラウザを
セレン
の分析例の
ベタアンカーランキング

対象データ
取得ランキング情報アンカー
元アドレス
[ランキングアドレス]
https://www.douyu.com/directory/rank_list/game
[アンカー室アドレス]
https://www.douyu.com/xxx
XXX =部屋番号の
構造を分析
Etherealの[ランキングのアドレス]、[アンカーの部屋のアドレス](Googleのデバッグネットワーク/チャールズ/シオマネキ)によっては
:ランキングデータ・インタフェース得https://www.douyu.com/directory/rank_list/game
不要な削除するには、パラメータの検証を(パラメータ)
クッキー確認応答(不要なクッキーを削除)
アナログ要求(チャールズ/フィドラー/郵便配達)
得られた部屋アンカー情報データが
見つかりました。 R ザ・ ザ・ M それはあります 主要 放送 間に 手紙 関心 ページ 表面 s c r i p t j s 使 [ ] [ ] [ ] [ ] [ ] [ ROOMページのスクリプトタグにアンカー室情報、JS変数であり、あなたは[スコアボードデータ] [データチャート]を取得[アンカーインターフェイスをランキング]要求することにより、書き込みのアイデアを実現するためのツールと一致するように正規表現を使用することができ、部屋番号がアンカー[アンカー室アドレス]要求[アンカー室アドレス]を連結することによって得ることができる得ることができます[ 部屋情報]を、分析情報は、アンカーに部屋を得ることができ
、外科医のコーディング
この例だけ爬虫類学習DEMOは、他の利用:免責事項を

爬虫類のPythonベースの基本的なデモを学習を実現

douyu_rank DEF(rankName、stattypeは):
'' '
ベタトップアンカーがフェッチ
データアドレスを

    * `rankName` anchor(巨星主播榜),fans(主播粉丝榜),haoyou(土豪实力榜),user(主播壕友榜)
    * `statType` day(日),week(周),month(月)
'''
if not isinstance(rankName, ERankName):
    raise Exception("rankName 类型错误,必须是ERankName枚举")
if not isinstance(statType, EStatType):
    raise Exception("statType 类型错误,必须是EStatType枚举")

rankName = '%sListData' % rankName.name
statType = '%sListData' % statType.name
# 请求获取html源码 
rs = rq.get(
    "https://www.douyu.com/directory/rank_list/game",
    headers={'User-Agent': 'Mozilla/5.0'})
# 正则解析出数据
mt = re.search(r'rankListDatas+?=(.*?);', rs, re.S)
if (not mt):
    print u"无法解析rankListData数据"
    return
grps = mt.groups()
# 数据转json
rankListDataStr = grps[0]
rankListData = json.loads(rankListDataStr)
dayList = rankListData[rankName][statType]
# 修改排序
dayList.sort(key=lambda k: (k.get('id', 0)), reverse=False)
return dayList

douyu_room DEF(romm_id):
'' '
解析アンカールーム情報
データアドレスを
romm_id'アンカー部屋番号'
' ''
RS rq.get =(
" https://www.douyu.com/%s " romm_id%)、
ヘッダー{= ' -エージェントユーザー': 'のMozilla / 5.0'})
MT = re.search(R&LT '?? {。*?= S +} $部屋+();'、RS、re.S)
IF(未MT) :
U "ROOMデータは解決できない"印刷
戻り
GRPS = mt.groups()
roomDataStr GRPS = [0]
roomData = json.loads(roomDataStr)は
roomDataを返します

DEF)(実行:
'' '
爬虫测试
'''
DATAS = douyu_rank(ERankName.anchor、EStatType.month)
印刷'
主播排行榜:'
アイテムのDATASで:
room_id =項目[ 'room_id']
roomData = douyu_room(room_id )
rommName =なし
roomDataている場合ではないなし:
rommName = roomData [ 'ROOM_NAME']
roomInfo =(U '房间(%sで):%s'は%(項目[ 'room_id']、rommName))
印刷アイテム[ 'ID' ]、項目[
'ニックネーム']、roomInfo、 '[' +アイテム[ 'catagory'] + ']'

実行()

おすすめ

転載: blog.csdn.net/weichen090909/article/details/95244830