どのようにPythonとBeautifulSmokeを使用してかき混ぜるZamatoレストランリストを行うには?

5771 ワード

Zomatoメニューのデータは、様々なウェブサイトからレストランメニューのリストをこすり落とすための最も重要なアプリケーションの一つです.これは、価格を抽出し、アグリゲータを設計したり、現在のホテルの予約サイトで改善UXを提供します.
ここでは、私たちはZamatoからホテルのデータの情報をかきたてるためのBeautifulSmokeを使用します.以下では、必要なデータのスクリプトを質問するCSSセレクタを高めるのを助けるBeautiFootFreeの簡単なスクリプトです.

-- encoding : UTF - 8 --
からインポート
インポート要求
headers ={ ' user - agent ':' mozilla/5.0 ( Macintosh ;インテルMac OS X 10 Cen 11 . 2 ) AppleWebKit/601.3.9 ( GHTMLのようなKHTML )バージョン/9.0.2 Safari/601.3.9 '
URL =' https://www.zomato.com/ncr/restaurants/pizza '
レスポンス=要求.get ( url , headers = headers )
スープ= BeautifulScreen ( response . content , ' lxml ')

印刷する
スープのアイテムのために.select ('. search result ')
try:
印刷(' --------------------------------------')
印刷する
except Exception as e:
    #raise e
    print('')
ここでは、ブラウザーシグナルを複製するために、ユーザーエージェントヘッダーも進めます.
さて、私たちは私たちが期待しているZamatoスクレーピング結果を見つけることができます.
webページを観察するとき,htmlの各項目はクラス検索結果を持つタグに含まれると結論付けられる.
以下のスクリプトを使用して、HTMLコードを個々の項目データから構成されるさまざまな部分に分割できます.

-- encoding : UTF - 8 --
からインポート
インポート要求
headers ={ ' user - agent ':' mozilla/5.0 ( Macintosh ;インテルMac OS X 10 Cen 11 . 2 ) AppleWebKit/601.3.9 ( GHTMLのようなKHTML )バージョン/9.0.2 Safari/601.3.9 '
URL =' https://www.zomato.com/ncr/restaurants/pizza '
レスポンス=要求.get ( url , headers = headers )
スープ= BeautifulScreen ( response . content , ' lxml ')

印刷する
スープのアイテムのために.select ('. search result ')
try:
印刷(' --------------------------------------')
印刷する
except Exception as e:
    #raise e
    print('')
一度コードを実行します.
ピトトンマ.パイ
ここでは、コードHTMLを分離します.
コード1
観察では、そのレストランの名前は常にクラスの結果のタイトルを持っていることがわかります.その結果を見てみよう.

-- encoding : UTF - 8 --
からインポート
インポート要求
headers ={ ' user - agent ':' mozilla/5.0 ( Macintosh ;インテルMac OS X 10 Cen 11 . 2 ) AppleWebKit/601.3.9 ( GHTMLのようなKHTML )バージョン/9.0.2 Safari/601.3.9 '
URL =' https://www.zomato.com/ncr/restaurants/pizza '
レスポンス=要求.get ( url , headers = headers )
スープ= BeautifulScreen ( response . content , ' lxml ')

印刷する
スープのアイテムのために.select ('. search result ')
try:
印刷(' --------------------------------------')
捺印
    print(item.select('.result-title')[0].get_text())

except Exception as e:
    #raise e
    print('')
上記のコードは次のように結果を受け取ります.
Code 2
さて、他のデータを取得しましょう.

-- encoding : UTF - 8 --
からインポート
インポート要求
headers ={ ' user - agent ':' mozilla/5.0 ( Macintosh ;インテルMac OS X 10 Cen 11 . 2 ) AppleWebKit/601.3.9 ( GHTMLのようなKHTML )バージョン/9.0.2 Safari/601.3.9 '
URL =' https://www.zomato.com/ncr/restaurants/pizza '
レスポンス=要求.get ( url , headers = headers )
スープ= BeautifulScreen ( response . content , ' lxml ')

印刷する
スープのアイテムのために.select ('. search result ')
try:
印刷(' --------------------------------------')
捺印
    print(item.select('.result-title')[0].get_text().strip())
    print(item.select('.search_result_subzone')[0].get_text().strip())
    print(item.select('.res-rating-nf')[0].get_text().strip())
    print(item.select('[class*=rating-votes-div]')[0].get_text().strip())
    print(item.select('.res-timing')[0].get_text().strip())
    print(item.select('.res-cost')[0].get_text().strip())


except Exception as e:
    #raise e
    print('')
実行時:
Code 3
結果は、評価、レビュー、レート、およびアドレスが表示されます.
ユーザーエージェントの文字列の回転は、それは似たようなブラウザではないことをZamatoが知っているようになります.また、Zamatoまた、他のトリックを避けてすべてのIPをブロックすることができます.
IPブロックを征服する
Proxy APIのような個人的な回転代理サービスの投資は、仕事を完了する成功して手間のかからないZamatoメニューデータの間の不一致をプロジェクトを掻き取るでしょう.
プロキシサーバのプロキシAPIを使用すると、すぐにIPブロックを使用してすべての問題を解決する滑らかなAPIを提供します.
  • のまわりで位置するより高いパフォーマンスパフォーマンスプロキシのMilliansを使っている

  • 自動化されたIP回転
  • を使用する

  • 我々の自動車ユーザーエージェントを使用している
  • 様々な有効なブラウザーと異なるウェブブラウジングバージョンからの要求をシミュレーションするストリング回転.
  • 自動生成CAPTCHA解決システムを使用している
  • .
  • いくつかの顧客は、単純なAPIを使用してIPブロックの問題を解決している.
    全体のプロセスは、プログラミング言語の簡単なAPIを使用して処理することができます.
    カール「https://www.xbyte.io/?key=API_KEY&url=https://example.com
    Xバイト企業のクロールでは、常にあなたのクエリに答えて満足している.質問の場合は、メッセージをドロップ!
    ソース:https://www.xbyte.io/how-to-do-zomato-restaurant-listings-scraping-using-python-and-beautifulsoup.php