コンテンツ
1.爬虫類とは何ですか?
python 2.なぜウェブクローラ
3.python環境設定
4.私は、Pythonの爬虫類のどのような事前知識を知っておく必要があります
正規表現について5。
Nで処理された前記抽出Webコンテンツおよび発現
7.xPathとBeautifulSoupイントロ
簡単に言えば、爬虫類プローブは機械で、その基本的な動作は、散歩様々なサイトへの人間の行動をシミュレートする小さなボタン、データを検索し、情報や背中のバックを参照してくださいすることです。疲れを知らないの昆虫が建物の中に周りのクロールのように。
あなたは簡単に想像できる:すべての爬虫類はあなたです「アバター」。猿の王様のように猿の束を吹く、毛の一握りを引っ張りました。
あなたは、毎日のBaiduのを使用し、実際には、この技術の爬虫類の使用:各サイトへのリリース日は無数の爬虫類、その情報を再び戻って来て、あなたが取得するために、その後の良好な化粧チームの行が待っています。
数多くの約束を広げると同等グラブ票へのソフトウェアは、各アバターはあなたが常にリフレッシュさ以上の12306枚のチケットのウェブサイトを訓練するのに役立ちます。チケットたら、すぐに撃墜され、その後、あなたは叫ぶ:暴君の支払いを、是非。- ユーザーからはほとんどの歴史を知っています
< - ... - !>:定義のコメント
<!DOCTYPE>:定義するドキュメントタイプ
<HTML>:総タグのHTMLドキュメント
の<head>:ヘッド定義
<body>を:定義したWebコンテンツを
<SCRIPT>:カスタムスクリプト
の<div>:部門、パーティション、容器ラベル定義
の段落、段落に定義:<P>
<A>を:ハイパーリンク定義
の<span>:テキストコンテナの定義
ラップ:<BR>
の<form>:カスタムフォーム
<テーブル>:定義テーブルを
<TH>:定義されたヘッダ
<TR>:テーブルの行
<TD>:テーブルの列
<B>:定義太字
<IMG>:カスタム画像
インポート再 インポートurllib.request インポートchardet レスポンス = urllib.request.urlopen(「http://news.hit.edu.cn/ 」あなたはのURLクロールするページ用)#入力パラメータ HTML = response.read()#をHTML読み取る可変 chardet1 = chardet.detect(HTML)#取得エンコーディング HTML = html.decode(chardet1 [ ' エンコーディング'取得した符号化に従って処理])#
ここでは、操作のpython爬虫類、ローカル操作にWebコンテンツをクロール達成される上記のコードの数行を実証するための一例として、大学の公式ニュースサイトを持っています。
次は、正規表現の処理にクロールの内容で、我々はページのソースコードを観察するために取得したいものを手に入れます:
私たちは以下のことを達成するために学んだ知識の前に、正規表現にマッチしている外部へのリンクのために願っています:
mypatten = " <LIクラス= \"リンク項目\ "> <a href=\"(.*)\">の<span>(。*)</ span>をする</a>ます。</ li> " マイリスト = re.findall(mypatten、HTML) のための I におけるマイリスト: プリント(" 外部链接地址:%S网站名:%S "%(I [0]、I [1]))
その効果は以下のとおりです。
得られたウェブ文書を処理する正規表現に加えて、我々はまた、独自のWebアーキテクチャを考慮することができます。
XPathの、XMLパス言語、つまりXMLパス言語の完全な名前は、それがXMLドキュメントの言語での発見情報です。XPathのは、元々XML文書を検索するように設計されたが、それはまた、HTML文書を検索するために適用されました。
ノード名このノードのすべての子ノードを選択する
/現在のノードが選択された直接の子ノードが
//現在のノードからの子孫ノードを選択します
。現在のノードを選択します
。..現在のノードの親ノードを選択し
@選択属性
ここで、一般的にXPathのマッチングルールのリスト、例えば/代表はすべての子孫が現在のノード、現在のノードを選択する代表ノード//選択を表す直系子ノードを選択..代表属性@親ノードの選択を添加します属性に一致する特定のノードを選択し、定義します。
lxmlのインポートetree インポートurllib.request インポートchardet 応答 = urllib.request.urlopen(" https://www.dahe.cn " ) HTML = response.read() chardet1 = chardet.detect(HTML) HTML = html.decode (chardet1 [ ' コード' ]) etreehtml = etree.HTML(HTML) マイリスト = etreehtml.xpath(" / HTML /本体/ DIV / DIV / DIV / DIV / DIV / UL / DIV /李")
BeautifulSoup4の爬虫類は、スキルを学びます。BeautifulSoup主な機能は美しいスープを自動的に入力された文書をコードUnicodeに変換し、文書を出力UTF-8でエンコードに変換され、ウェブからデータをフェッチすることです。BeautifulSoupは、HTMLパーサーのPythonの標準ライブラリはまた、我々は、デフォルトのPython Pythonはパーサ、パーサlxmlのより強力な、より速く、推奨される解決lxmlのを使用して、それをインストールしていない場合は、サードパーティのパーサをサポートしてサポートしていますデバイス。
BS4 インポートBeautifulSoupの ファイル =オープン(' ./aa.html '、' RB ' ) HTML = File.read() BS = BeautifulSoup(HTML、" html.parser ")#のインデント 印刷(bs.prettify() )#の形式のHTML構造の 印刷(bs.title) #タイトルタグの名前を取得 印刷(bs.title.name) #は、テキストのタイトルタグ得る 印刷(bs.title.string) #すべてのコンテンツ取得headタグの 印刷を( bs.head) #第1のタグのdivのすべての内容取得 プリント(bs.div) #は、最初のdiv IDタグ値を取得する 印刷(bs.div [ 「ID 」 ]) #にラベルのすべての内容取得 の印刷(bs.a) #内のすべてのタグのすべての内容取得 を印刷する(bs.find_all(" ")) #取得= ID "U1" を印刷(bs.find(ID = " U1 ")) #は、すべての取得ラベル、およびラベル印刷トラバースhrefの値のための項目で bs.find_all(「」): 印刷(item.get(「HREF 」 )) #取得ラベルのすべて、およびトラバースラベルテキスト値印刷する ための項目で bs.find_all(「」): 印刷(item.get_text())
< - ... - !>:定義のコメント
<!DOCTYPE>:定義するドキュメントタイプ
<HTML>:総タグのHTMLドキュメント
の<head>:ヘッド定義
<body>を:定義したWebコンテンツを
<SCRIPT>:カスタムスクリプト
の<div>:部門、パーティション、容器ラベル定義
の段落、段落に定義:<P>
<A>を:ハイパーリンク定義
の<span>:テキストコンテナの定義
ラップ:<BR>
の<form>:カスタムフォーム
<テーブル>:定義テーブルを
<TH>:定義されたヘッダ
<TR>:テーブルの行
<TD>:テーブルの列
<B>:定義太字
<IMG>:カスタム画像