Pythonのウェブクローラと情報抽出(上の例)

PythonのWebクローラーと情報抽出をもたらすために皆のための小さな以下の(例を説明します)。小扁は、共有への皆のために、今、非常に良い感じが、また、基準となります。是非、ご覧ください、一緒のXiaobianの続く
コースアーキテクチャ:

自動的にネットワークに提出された自動クロールページやHTML要求:1は、フレームを要求します

2、robots.txtの:ウェブクローラ除外基準

3、BeautifulSoupフレームワーク:解析するHTMLページ

4、再フレームワーク:定期的な枠組みは、キー情報のページを抽出します

5、Scrapyフレームワーク:Webクローラーの原理が導入されたプロ爬虫類のフレームワークを導入しました

理念:ウェブサイトでは、APIであります...

Python言語は、一般的にIDEツールを使用します

テキストツールIDE:

IDLE、メモ帳++、崇高なテキストは、Vim&Emacsの、アトム、コモドの編集

統合ツールIDE:

PyCharm、ウイング、PyDevは&Eclipseのは、Visual Studioの、アナコンダ&スパイダー、キャノピー

・IDLEは、次の2つの方法で対話的なファイルが含まれ、デフォルトのPython、付属しています一般的なエントリーレベルのオーサリングツールです。短いプログラムに適しています。

・崇高なテキストは、スタイルのプログラミングの様々なプログラミングの経験を向上させることができ、特定のプログラミングツールを開発するサードパーティのプログラマのために設計されています。

・ウィングはWingwareは、開発する人に適したバージョン管理、同期バージョンと、機能豊富なデバッグ、同社料IDEによって提供されます。大規模なプログラムを書くのに適しています。

・Visual Studioは、あなたは、Pythonのconfigure PTVS、主にWindowsベースの環境、豊富なデバッグ機能を書くことができ、Microsoftのメンテナンスです。

・EclipseはオープンソースのIDE開発ツールである、PyDevはを設定することで、Pythonで書かれていますが、コンフィギュレーションプロセスは複雑であり、開発経験をある程度必要とすることができます。

・コミュニティ版とProfessionalエディションにPyCharmは、コミュニティ版は無料、シンプル、非常に複雑なプロジェクトを調製するのに適した、統合されています。

科学技術計算に適した、IDEデータ解析:

・キャノピーは会社によって維持されているサポートほぼ500サードパーティのライブラリ、科学計算用のアプリケーション開発というEnthoughtツールを充電します。

・アナコンダは、無料のオープンソースである約800サードパーティのライブラリをサポートしています。

ライブラリの取得要求

要求のインストール:

要求ライブラリは現在、Pythonのサードパーティのライブラリ、シンプル、簡単な機能をクローリング最高のWebとして認識されています。

公式サイト:のhttp://www.python-requests.org

「\ WINDOWS \ System32にC」:コマンドラインで管理者として実行「cmd.exeの」、タイプを探す :「ピップリクエストをインストール」 を実行します。ここに画像を挿入説明
使用IDLEテストは、ライブラリを要求します:

>>> import requests
>>> r = requests.get("http://www.baidu.com")#抓取百度页面
>>> r.status_code
>>> r.encoding = 'utf-8'
>>> r.text

リクエスト図書館7主なメソッドここに画像を挿入説明
get()メソッド

R = requests.get(URL)

サーバーへのリソース要求のRequestオブジェクトを構築するために()メソッドを取得し、サーバーは、Responseオブジェクトがリソースを備えて返します。

requests.get(URL、のparams =なし、** kwargsから)

URL:URLは、ページへのリンクを取得する予定

params:URL、辞書やバイトストリーム形式の追加パラメータ、オプション

** kwargsから:12のアクセス制御パラメータ

二つの重要なオブジェクトライブラリを要求します

・ リクエスト

・レスポンス:爬虫類・リターンの内容を含むResponseオブジェクト

Responseオブジェクトの属性

r.status_code:HTTPリクエスト404は失敗を表し、200は接続成功を示すステータスを返します

r.text:HTTPレスポンス文字列の内容、すなわち、URLに対応するページの内容

r.encoding:推測のHTTPヘッダから対応するコンテンツを符号化します

r.apparent_encoding:コンテンツ解析(代替エンコーディング)から対応するコンテンツを符号化します

r.content:HTTPレスポンスのコンテンツのバイナリ形式

r.encoding:文字セットヘッダが存在しない場合、エンコーディングはISO-8859-1であると考えられます。

r.apparent_encoding:ページの内容を分析するには、r.encoding代替をコードしているとみなすことができます。

レスポンスコード:

r.encoding:推測をHTTPヘッダからの応答内容エンコーディングで、文字セットヘッダが存在しない場合、符号化は、ISO-8859-1、表示ウェブコンテンツによるr.encodingにr.textとして考えられています

r.apparent_encoding:ページコンテンツのエンコーディングに基づいて分析する代替r.encodingとして見ることができます

クロールされたページの汎用コードフレーム

異常な要求ライブラリここに画像を挿入説明
レスポンス例外

r.raise_for_status():そうでない場合には200、異常requests.HTTPError。

追加の声明のtry-除く例外処理の使用を容易にしないという場合は内部r.status_codeを決定するための方法では、200に等しく、

import requests
 
def getHTMLText(url):
  try:
    r = requests.get(url, timeout=30)
    r.raise_for_status() # 如果状态不是200,引发HTTPError异常
    r.encoding = r.apparent_encoding
    return r.text
  except: 
    return "产生异常"
 
if __name__ == "__main__":
  url = "http://www.baidu.com"
  print(getHTMLText(url))

共通のコードフレームは、ユーザークロールウェブは、より効率的、安定的かつ確実になることができます。

HTTPプロトコル

HTTP、ハイパーテキスト転送プロトコル、ハイパーテキスト転送プロトコル。

HTTPは、「要求と応答」モードでは、ステートレスなアプリケーション層プロトコルに基づいています。

HTTPプロトコルは、ネットワークリソースを見つけ識別としてURLを使用しています。

URLの形式ます。http://ホスト[:ポート] [パス]

・ホスト:法的インターネットホストのドメイン名またはIPアドレス
・ポート:ポート番号、デフォルトのポート番号は80です
。・パス:要求されたリソースのパス

HTTP URLの理解:

URLは、HTTPプロトコル、データリソースに対応するURLを経由してインターネットにアクセス・パスのリソースです。

リソースにHTTPプロトコルの動作ここに画像を挿入説明
PATCHとPUTの違いを理解します

ユーザーID、ユーザー名、20個のフィールドを含むデータの場所URLのUserInfoのセットを、と仮定します。

需要:ユーザが他のユーザ名を変更せず、修正します。

PATCHの*を使用する、URLにユーザー名の一部だけ更新要求を提出しました。

*使用PUT、すべての20個のフィールドがURLに提出しなければならない、コミットされていないフィールドが削除されます。

PATCHの主な利点:ネットワーク帯域幅の保存

図書館の主な分析方法を要求します

requests.request(メソッド、URL、** kwargsから)

・方法:モード要求、対応するGET / PUT /ポスト7種類

例:R = requests.request( 'オプション' は、url、** kwargsから)

・URL:URLはページへのリンクを取得する予定

・** kwargsから:アクセス制御パラメータ、13の合計は、オプションです

params:辞書やパラメータとしてURLに追加バイトのシーケンス。

kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('GET', 'http://python123.io/ws',params=kv)
print(r.url)
'''
http://python123.io/ws?key1=value1&key2=value2
'''

データ:要求の内容として辞書、バイトのシーケンス又はファイルオブジェクト。

JSON:要求の内容としてJSON形式のデータを、。

ヘッダ:辞書、HTTPカスタムヘッダー。

hd = {'user-agent':'Chrome/10'}
 
r = requests.request('POST','http://www.yanlei.shop',headers=hd)

クッキー:辞書やのCookieJar、クッキーのリクエスト。

AUTH:タプル、サポートHTTP認証。

ファイル:辞書、ファイル転送、

fs = {'file':open('data.xls', 'rb')}
 
r = requests.request('POST','http://python123.io/ws',files=fs)

タイムアウト:秒で、タイムアウト時間を設定します。

プロキシ:辞書は、アクセスプロキシサーバー設定、ログイン認証を増やすことができます

allow_redirects:真/偽、デフォルトはTrueで、リダイレクトスイッチ。

ストリーミング:真/偽、デフォルトはTrueで、コンテンツのダウンロードへの即時アクセスを切り替えます。

検証:真/偽、デフォルトはTrueで、SSL証明書の認証スイッチと、

CERT:ローカルSSL証明書のパス

#方法及参数
requests.get(url, params=None, **kwargs)
requests.head(url, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.delete(url, **kwargs)

ここに画像を挿入説明
Webクローラーは、問題を引き起こしました

パフォーマンスのハラスメント:

書き込みのレベルと目的に制限され、ウェブクローラは、膨大なリソースオーバーヘッドのWebサーバになります

法的リスク:

サーバー上のデータは、法的リスクをもたらす利益のウェブクローラのデータを取得した後、財産の所有権を持っています。

プライバシーの喪失:

ウェブクローラは、個人のプライバシーの開示ので、保護されたデータへのアクセスを簡単なアクセス制御を突破する能力を有することができます。

ウェブクローラの制限

・出典レビュー:ユーザエージェントの制限を決定するために、

点検訪問HTTPプロトコルヘッダのUser-Agentフィールド、レスポンスの値は、ブラウザやクローラフレンドリーにアクセスします。

・発表:ルーツ契約

すべては、爬虫類が要件に準拠し、ウェブサイトのクロール爬虫類の戦術を語りました。

ロボット契約

ロボット除外標準除外基準クローラー

役割:ウェブサイトはページをクロールしてものではないことができるWebクローラーを知らせます。

フォーム:サイトのルートディレクトリにrobots.txtファイル。

ケース:Jingdongはロボット契約

http://www.jd.com/robots.txt

# 注释:*代表所有,/代表根目录
User-agent: * 
Disallow: /?* 
Disallow: /pop/*.html 
Disallow: /pinpai/*.html?* 
User-agent: EtaoSpider 
Disallow: / 
User-agent: HuihuiSpider 
Disallow: / 
User-agent: GwdangSpider 
Disallow: / 
User-agent: WochachaSpider 
Disallow: /

使用ロボット契約

クローラー:自動または手動識別のrobots.txt、クロールの次に内容。ここに画像を挿入説明
  バインディング:ロボットプロトコルが推奨されますが、非結合、ウェブクローラが追跡することはできませんが、法的リスクがあります。

図書館Webクローラーの戦闘を要求

1、Jingdongの商品

import requests
url = "https://item.jd.com/5145492.html"
try:
 r = requests.get(url)
 r.raise_for_status()
 r.encoding = r.apparent_encoding
 print(r.text[:1000])
except:
 print("爬取失败")

2、アマゾンの商品

# 直接爬取亚马逊商品是会被拒绝访问,所以需要添加'user-agent'字段
import requests
url = "https://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
 kv = {'user-agent':'Mozilla/5.0'} # 使用代理访问
 r = requests.get(url, headers = kv)
 r.raise_for_status()
 r.encoding = r.apparent_encoding
 print(t.text[1000:2000])
except:
 print("爬取失败"

3、百度/ 360検索キーワード提出

検索エンジンは、インターフェイスを提出するキーワード

・Baiduのキーワードのインタフェース:

http://www.baidu.com/s?wd=keyword

・360個のインターフェイスキーワード:

http://www.so.com/s?q=keyword

# 百度
import requests
keyword = "Python"
try:
 kv = {'wd':keyword}
 r = requests.get("http://www.baidu.com/s",params=kv)
 print(r.request.url)
 r.raise_for_status()
 print(len(r.text))
except:
 print("爬取失败")
# 360
import requests
keyword = "Python"
try:
 kv = {'q':keyword}
 r = requests.get("http://www.so.com/s",params=kv)
 print(r.request.url)
 r.raise_for_status()
 print(len(r.text))
except:
 print("爬取失败")

4、クロールおよびストレージのネットワークピクチャー

ネットワーク画像リンクフォーマット:

http://www.example.com/picture.jpg

ナショナルジオグラフィック:

http://www.nationalgeographic.com.cn/

画像リンクを選択します。

http://image.nationalgeographic.com.cn/2017/0704/20170704030835566.jpg

图片爬取全代码
import requests
import os
url = "http://image.nationalgeographic.com.cn/2017/0704/20170704030835566.jpg"
root = "D://pics//"
path = root + url.split('/')[-1]
try:
 if not os.path.exists(root):
  os.mkdir(root)
 if not os.path.exists(path):
  r = requests.get(url)
  with open(path,'wb') as f:
   f.write(r.content)
   f.close()
   print("文件保存成功")
 else:
  print("文件已存在")
except:
 print("爬取失败")

5、自動クエリのIPアドレス帰属

www.ip138.com IPお問い合わせ

http://ip138.com/ips138.asp?ip=ipaddress

http://m.ip138.com/ip.asp?ip=ipaddress

import requests
url = "http://m.ip138.com/ip.asp?ip="
ip = "220.204.80.112"
try:
 r = requests.get(url + ip)
 r.raise_for_status()
 r.encoding = r.apparent_encoding
 print(r.text[1900:])
except:
 print("爬取失败")
# 使用IDLE
>>> import requests
>>> url ="http://m.ip138.com/ip.asp?ip="
>>> ip = "220.204.80.112"
>>> r = requests.get(url + ip)
>>> r.status_code
>>> r.text

最後に、私は[良い評判パイソンの収集をお勧めします入力する]をクリック ]、スキルを習得古いタイマーがたくさんある、経験、面接スキル、職場体験や他のシェアを学んで、より多くの我々は慎重に、実際のプロジェクトデータ上のゼロベースの入門情報を準備しました毎日のPythonプログラマは技術のタイミングを説明し、細部に注意を払うためにいくつかの学習方法と必要性を共有する
(例は説明すると)このPythonのウェブクローラと情報抽出よりは、すべての内容全体を共有するために小さなシリーズです

リリース7件のオリジナルの記事 ウォンの賞賛1 ビュー3558

おすすめ

転載: blog.csdn.net/haoxun12/article/details/104954881