Python BeautifulSmokeを使用したWebスクラップ
4514 ワード
何がウェブスクラップですか?
ウェブサイトからデータを抽出するには主に2つの方法があります.
このブログでは、美しいスープと呼ばれるPythonのウェブを掻くようなフレームワークの実装を使用してWebスクレーピングに関与する手順について説明します.
はじめに
我々は、BeautiFookieと呼ばれるシンプルで強力なライブラリと一緒に、我々のスクレーピング言語としてPythonを使用するつもりです.
Macユーザーのための
pip install BeautifulSoup4
注意:上記のコマンドラインを実行しない場合は、各行の前にsudoを追加してみてください.廃棄規則及び規制
スクラップを始める前に、どんなサイトでもスクラップするための規則と規則について知る必要があります.ちょうど任意のサイトからデータをスクラップとしてランダムサイトをスクラップを開始する前にポイント以下を読む合法的ではありません.以下の点に従ってください.
Webスクラッピングに必要な手順
アクセスするWebページのURLにHTTPリクエストを送信します.サーバは、ウェブページのHTML内容を返すことによって、要求に応答する.このタスクでは、サードパーティのHTTPライブラリをPythonリクエストに使用します.cmdを使ってリクエストをインストールする
pip install requests
HTMLコンテンツにアクセスしたら、データを解析するタスクを残します.HTMLデータのほとんどは入れ子になっているので、文字列処理を通してデータを取り出すことはできません.つは、HTMLデータの入れ子/ツリー構造を作成できるパーサーが必要です.HTMLパーサーライブラリが利用可能ですが、最も進んだものはHTML 5 libです.Cmdを使ってHTML 5 libをインストールします.
pip install html5lib
COVID - 19データのスクラップ
我々は、サイトのworldometerからテーブルの形式でデータを抽出されます.このコードは次のように記述します.
コード
# importing modules
import requests
from bs4 import BeautifulSoup
# URL for scrapping data
url = 'https://www.worldometers.info/coronavirus/countries-where-coronavirus-has-spread/'
# get URL html
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
data = []
# soup.find_all('td') will scrape every element in the url's table
data_iterator = iter(soup.find_all('td'))
# data_iterator is the iterator of the table
# This loop will keep repeating till there is data available in the iterator
while True:
try:
country = next(data_iterator).text
confirmed = next(data_iterator).text
deaths = next(data_iterator).text
continent = next(data_iterator).text
# For 'confirmed' and 'deaths', make sure to remove the commas and convert to int
data.append((
country,
int(confirmed.replace(', ', '')),
int(deaths.replace(', ', '')),
continent
))
# StopIteration error is raised when there are no more elements left to iterate through
except StopIteration:
break
# Sort the data by the number of confirmed cases
data.sort(key = lambda row: row[1], reverse = True)
# create texttable object
table = tt.Texttable()
table.add_rows([(None, None, None, None)] + data) # Add an empty row at the beginning for the headers
table.set_cols_align(('c', 'c', 'c', 'c')) # 'l' denotes left, 'c' denotes center, and 'r' denotes right
table.header((' Country ', ' Number of cases ', ' Deaths ', ' Continent '))
print(table.draw())
コードの出力は次のようになります.結論
BeautiFoomライブラリについての本当に良いことはHTML 5 lib、lxml、htmlのようなHTML解析ライブラリの上部に構築されていることです.パーサなど、BeautifulSpecオブジェクトを指定し、パーサライブラリを指定することもできます.
それで、これはPythonでウェブスクレーパーを作成する簡単な例です.ここから、あなたの選択の他のウェブサイトをスクラップしようとすることができます.任意のクエリの場合は、コメントセクションで以下のように投稿してください.
あなたが以下のリンクで見ることができる私の他のブログ:
ハッピーコーディング!チアーズ.
Reference
この問題について(Python BeautifulSmokeを使用したWebスクラップ), 我々は、より多くの情報をここで見つけました
https://dev.to/ramakm/web-scrapping-using-python-beautifulsoup-3kk2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Python BeautifulSmokeを使用したWebスクラップ), 我々は、より多くの情報をここで見つけました https://dev.to/ramakm/web-scrapping-using-python-beautifulsoup-3kk2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol