ウェブクローラとトルネード

1つの爬虫類紹介

爬虫類Framework 1.1の

パフォーマンス:

  同時の方式:非同期IO(gevent /ツイスト/ asyncio / aiohttp)、カスタムモジュールの非同期IO、IO多重化:選択

scrapyフレームワーク

  はじめに非同期IO:ツイスト、ツイストベースScrapyソース定義クローラフレーム、ツイストScrapyを使用しながら、

1.2トルネードフレーム(非ブロッキング非同期)

トルネード基本的な使い方

ソース解析

カスタム非同期フレームを非ブロック

 

2.基本操作爬虫類

2.1リクエストのテンプレートモジュール

BP4インポートBeautifulSoupから

R = requests.get(URL)

スープ= BeautifulSoup(response.text、機能= "html.parser")

ターゲット= soup.find(ID = "XXX")

印刷(ターゲット)

*爬虫類の枠組み文書のコースウェア・ワード「の情報にアクセスできるウェブクローラ。」

 

2.2リクエストの詳細

2.2.1アンチファイアウォール

ヘッダのUser-Agentの手動変更、など

'SER-エージェント': "Mozillaの/ 5.0"

 

2.2.2追加の操作

- requests.post( 'URL')/( 'URL')を取得、次のパラメータをロードすることができます

URLアドレスを提出

本体データと共通辞書に辞書、種類、文字列、キーに要求することができるとJSONを行うことができ、リクエストボディ、11変速機、のデータで送信されたデータ

リクエストボディにJSON転送データは、全ての文字列、統一された変速機の内部に直列に接続され、ネストされた辞書の辞書は、データのみを送信することができるJSON

URLで渡されたパラメータparamsは、メソッドパラメータの指定された数は、可変パラメータの方法を変更します

ユーザーの身元を特定するためのクッキー、sessioトラック

ヘッダは、ヘッダを要求し、ファイアウォールのサイトをクロールするためのパラメータを変更します

ファイル操作用のファイル

追加暗号化されたユーザー名とパスワードの認証ヘッダ

タイムアウト要求とそれに対応するタイムアウト

allow_redirectsリダイレクトを許可するかどうか、すなわち、非単一の宛先爬虫類

エージェントのプロキシ

証明書システムを無視するかどうかを確認します

証明書の証明書ファイル

クライアントアクセス情報履歴を保存するrequests.Session()

 

- 応答= requests.post()戻り値

response.get( 'URL')  

response.text出力テキスト

response.contentの出力内容(任意のテキスト)

response.encodingコーディング

response.aparent_encodingゴミ問題を解決します

 

- リクエストヘッド/テールリクエスト

参照してください、データを保存します

 

- インタラクティブなデータの提出

1.直接HTML- - ネットワークレビューに、メッセージの形で送信、データはこのように更新されません。

2.あなたはこの方法を更新中およびデータのアップロード後にHTML-レビュー - ネットワークでは、フォームのフォームを形成するためにデータを提出する場合。

 

提供2.3 BeautifulSoup機能

 コードについては、次の理解のために、単一の行のコメントに書かれています。

BS4の輸入BeautifulSoup 

自定义HTML 
html_doc = ""」
<HTML> <HEAD> <TITLE>ヤマネの物語</ TITLE> </ HEAD> 
<BODY> 
    の<div> <のhref = 'のhttp:// WWW。 cunzhang.com '>剥夺老师<P>空自</ P> </a>の</ div> 
    <a id='i1'>刘志超</a>の
    の<div> 
        <P>空自</ P> 
    </ divの> 
    <P> asdfffffffffff </ P> 
</ BODY> 
</ HTML> 
""」

スープ = BeautifulSoup(html_doc、機能は= " html.parser "

タグ = soup.find(' A ' 
V = tag.unwrap()
 印刷(スープ)

から bs4.element インポートタグ
OBJ1は、タグ(名前= = ' DIV '、attrsに= { ' ID '' IT ' })
obj1.string = ' 私はへの新たなんだ' 

タグ(= soup.findを" A ' 
V = tag.wrap(OBJ1)  現在の行からは、挿入されたHTML 
プリント(スープ)


タグ = soup.find(' ボディ'身体から挿入の<div>の後に部分的にHTML、出力<BODY> <div> <div>の間でのコンテンツ 
tag.append(スープ。(見つけます"' ))
 プリント(スープ)

から bs4.elementのインポートタグ
OBJ =タグ(NAME = ' I 'ATTRSは= { ' ID '' それ' })
obj.string = ' 我是一个新来的' 
タグ = soup.find(' 身体' #1 tag.insert_before(OBJ)
tag.insert_after(OBJ)
 プリント(スープ)


タグ = soup.find(' P '、再帰= 真)
 プリント(タグ)
タグ = soup.find(' 身体').find(' P '、再帰この= False)が
 印刷(タグ)

タグ = soup.find(' A ' 
V = tag.get_text()
 印刷(V) 

は、操作属性 
タグをsoup.find =(' A ' 
tag.attrs [ ' 恋人' ] = ' 物理の先生' 
デル tag.attrs [ ' HREF ' ]
 印刷(スープ)

#の子供:息子タグとコンテンツ
から bs4.elementのインポートタグ
タグ = soup.find(身体).children
 ためのタグタグ:
     IFタイプ(タグ)== :タグ
         印刷(タグ、タイプ(タグ))
     印刷" テキスト.... ' 

タグ = soup.find(' ボディ' ).descendants
 プリント)(一覧(タグ)

タグ = soup.find(' 身体" オブジェクトのタイプはバイトに変換し
、印刷を(tag.encode_contents())    バイナリに中国語の文字符号化は、<BODY> XXX <body>タグ出力使い捨てボディコンテンツ
#は文字列型にオブジェクトを変換する
プリント(tag.decode_contents())    復号、バイナリ変換漢字、<身体> XXX <body>タグのボディコンテンツ出力分岐
#の印刷(STR(タグ))

 

おすすめ

転載: www.cnblogs.com/yuyukun/p/11626289.html