Pythonの:リクエストのライブラリ、BeautifulSoup4 (簡単なWebクローラー用)ライブラリの基本的な使用
まず、基本的なライブラリの使用要求
要求のpython言語で書かれたシンプルに使えるの HTTPのよりも使用するようにライブラリurllibは、よりシンプルで便利に。
要求があることで、使用する前に、サードパーティのライブラリピップインストール。
ピップリクエストをインストール
1. 基本的な使い方:
インポート要求 #Baiduのホームページの、例えば レスポンス = requests.get(' http://www.baidu.com ' ) #属性応答オブジェクト 印刷(response.status_code) #の印刷ステータスコード 印刷(response.url) #の印刷要求のURL プリント(Response.Headers) #の印刷ヘッダ情報 印刷(Response.Cookies) #のプリントクッキー情報 印刷(response.text) #テキスト形式でWebページのソースコードを印刷 印刷(response.content)#1 バイトの出力ストリーム
実行ショーの後:
ステータスコード:200 URL:www.baidu.com #出力ヘッダ情報、クッキー情報やページの情報源 <RequestsCookieJar [<クッキーBDORZ = 27315 ため .baidu.com />]>
2. さまざまな方法の要求( HTTP テストサイト:http://httpbin.org/ )
インポート要求 requests.get(' http://httpbin.org/get ' ) requests.post(' http://httpbin.org/post ' ) requests.put(' http://httpbin.org/put ' ) requests.delete(' http://httpbin.org/delete ' ) requests.head(' http://httpbin.org/get ' ) requests.options(' http://httpbin.org/get ')
3.responseのオブジェクトメソッド
JSON() :可能なHTTPの存在解析応答内容JSONのデータは、解析を容易にするHTTP の動作を。
raise_for_statusは() :限り、要求のステータスを返しSTATUS_CODE ない200 、例外が生成されます。用してみてください-以外のステートメント。
リクエストは、いくつかの一般的に使用される例外を生成します。
ConnectionErrorの例外次のようなネットワークの異常、DNSのクエリが失敗したが、接続を拒否しました。
HTTPError の例外:無効なHTTPのレスポンス。
タイムアウト例外:リクエストURLのタイムアウト。
TooManyRedirects 例外:要求がリダイレクト・セットの最大数を超えています。
Webページの機能の内容は、次のコードを使用することをお勧めします:
デフgetHTMLText(URL): してみてください: R = requests.get(URL、タイムアウト= 30 ) r.raise_for_status() #は、ステータスが200でない場合は、例外がスローされ r.encoding = 「UTF-8 」#いいえ、元のエンコーディングがUTF-8に変更されたかは重要で リターンr.text 除きます: リターン 「」
二、 beautifulsoup4 基本的なライブラリを使用
beautifulsoup4のパースとの処理のためのライブラリHTML とXML 。その最大の利点は、に基づいており、HTML やXMLのビルド有用な情報を抽出する解析木文法。
beautifulsoup4 また、使用する前に、サードパーティ製のライブラリ、同じにする必要ピップインストールを。
ピップbeautifulsoup4をインストール
注: beautifulsoup4のライブラリとbeautifulsoupのライブラリが混乱することができない、荒廃に後者によるものは、もはや維持されます。
使用中 beautifulsoup4 ライブラリーのニーズが引用される前に:
BS4のインポートBeautifulSoup
使用 BeautifulSoup()を作成するためにBeautifulSoupのオブジェクトを。
インポート要求 BS4のインポートBeautifulSoup R = requests.get(' http://www.baidu.com ' ) r.encoding = ' UTF-8 ' スープ = BeautifulSoup(r.text、' html.parser ' ) 印刷(タイプ(スープ))
BeautifulSoupオブジェクトがあり、ツリー構造からなる HTMLのページの各タグの構成ラベル属性BeautifulSoupオブジェクトを。次のプロパティBeautifulSoup共通オブジェクト:
soup.head :HTML ページの<head> コンテンツ
soup.title :HTMLの中にページのコンテンツのタイトル、<head>の中
soup.body :HTML ページの<body> コンテンツ
soup.p :HTML ページ最初の<P> コンテンツ
soup.strings :HTMLのすべての表示ページのWeb 上の文字列の内容を
soup.stripped_strings :HTMLのすべてでレンダリングしたページのWeb 上の非空白文字列の内容
#出力内容Baiduのホームページのタイトルタグ インポート要求 BS4のインポートBeautifulSoup R = requests.get(' http://www.baidu.com ' ) r.encoding = ' UTF-8 ' スープ = BeautifulSoup(r.text、' html.parser ' ) 印刷(soup.title)
beautifulsoup4のライブラリーは、各タグと呼ばれるタグタグオブジェクト、オブジェクトタグの一般的な特性は次の通りです:
名前:のラベル体の名前はのような文字列であり、 A 。
ATTRS:辞書、それはラベルのすべてのプロパティが含まれています。
内容:現在のラベル内のすべてのサブラベルの内容を含むリスト。
文字列:文字列、タグ、テキスト、ウェブページ、実際のテキストに囲まれています。
インポート要求 BS4のインポートBeautifulSoup R = requests.get(' http://www.baidu.com ' ) r.encoding = ' UTF-8 ' スープ = BeautifulSoup(r.text、' html.parser ' ) 印刷(soup.a) 印刷(soup.a.name) 印刷(soup.a.attrs) 印刷(soup.a.string) print(soup.p.contents)
如果需要遍历整个HTML页面列出标签对应的所有内容,可以用到find_all()方法。
BeautifulSoup.find_all( name , attrs , recursive , string , limit )
根据参数找对应标签,返回类型为列表。参数如下:
name:根据标签名查找。
attrs:根据标签属性值查找,需要列出属性名和值,用JSON表示。
recursive:设置查找层次,只查找当前标签下一层时使用recursive=False。
string:根据关键字查找string属性内容,采用string=开始。
limit:返回结果个数,默认返回全部结果。
import requests from bs4 import BeautifulSoup #爬取前程无忧网软件工程师薪资 r=requests.get('https://m.51job.com/search/joblist.php?jobarea=180400,180200&keyword=%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88&partner=webmeta') r.encoding='utf-8' soup=BeautifulSoup(r.text,'html.parser') allsalary=soup.find_all('em') for i in allsalary: if len(i.text)==0: continue print(i.text)