。オプションがあります:","クランチベース","会社概要","素晴らしいサポートをありがとう!","クイックリンク","アフィリエイト・プログラム","ProxyScrape プレミアムトライアル","プロキシの種類","代理国","プロキシの使用例","重要","クッキーポリシー","免責事項","プライバシーポリシー","ご利用条件","ソーシャルメディア","フェイスブック","LinkedIn","ツイッター","クオラ","テレグラム","ディスコード"," © Copyright 2024 -Thib BV| Brugstraat 18 | 2812 Mechelen | ベルギー | VAT BE 0749 716 760"]}
News is the best way to learn what is happening worldwide. For data engineers, news articles are one of the great ways to collect surreal amounts of data. More data means more insights, and that is the only to innovate our technology and bring our humanity to greater heights than ever before. But there is
ニュースは、世界中で何が起きているかを知る最良の方法だ。データ・エンジニアにとって、ニュース記事は超現実的な量のデータを収集する素晴らしい方法のひとつだ。より多くのデータはより多くの洞察を意味し、それこそが我々のテクノロジーを革新し、人類をかつてない高みへと導く唯一の方法なのだ。しかし、ニュースの量は多く、すべてのデータを手作業で取得するのは人間には不可能だ。データを自動的に取得する最善の方法は何か?その答えは、パイソンを使ったニュース記事のウェブスクレイピングだ。
この記事では、さまざまな新聞から最新のニュース記事をスクレイピングし、テキストとして保存するウェブスクレイパーを作成する。以下の2つのステップを経て、プロセス全体がどのように行われるかを詳しく分析する。
pythonを使ってニュース記事のウェブスクレイピングを行う方法について詳しく知りたい方は、どのセクションにも自由にジャンプしてください。
ウェブサイトやウェブページから重要な情報を引き出すには、そのウェブサイトがどのように機能しているかを知ることが重要である。ウェブブラウザ(Chrome、Firefox、Mozillaなど)を使って特定のURLにアクセスすると、そのウェブページは3つの技術の組み合わせになっている、
HTML(HyperText Markup Language):HTMLはウェブページのコンテンツを定義する。ウェブサイトにコンテンツを追加するための標準的なマークアップ言語です。例えば、テキストや画像、その他のものをウェブサイトに追加したい場合、HTMLはその手助けをします。
CSS(Cascading Style Sheets): ウェブページのスタイリングに使用される。CSSは、特定のウェブサイトで目にするすべての視覚的なデザインを処理します。
JavaScript: JavaScriptはウェブページの頭脳である。JavaScriptはすべてのロジック処理とウェブページの機能を処理します。したがって、コンテンツとスタイルをインタラクティブにすることができます。
これら3つのプログラミング言語によって、ウェブページの側面を作成し、操作することができる。
この記事を書くにあたって、あなたはウェブページとHTMLの基本を知っていると思う。div、タグ、見出しなど、いくつかのHTMLの概念は、このウェブスクレーパーを作成する際にとても役に立つかもしれない。すべてを知っている必要はないが、ウェブページのデザインと情報がどのように含まれているかという基本的なことだけを知っていれば大丈夫だ。
Pythonにはウェブページから情報をスクレイピングできるパッケージがいくつかある。Webスクレイピングのための最も有名で使いやすいPythonライブラリの1つなので、BeautifulSoupを紹介する。
BeautifulSoupはURLのHTMLコンテンツを解析し、タグやラベルを使ってアクセスするのに最適だ。そのため、ウェブサイトから特定のテキストを抽出するのに便利だろう。
たった3-5行のコードで、私たちは魔法をかけることができ、インターネットから選択したウェブサイトのあらゆるタイプのテキストを抽出することができます。
まずは基本から。ライブラリパッケージをインストールするには、以下のコマンドをPythonディストリビューションに入力してください、
pipinstallbeautifulsoup4
また、任意のページのHTMLコードをBeautifulSoupに提供する'requestsモジュール'も使用する。インストールするには、以下のコマンドをPythonディストリビューションに入力してください、
pipinstallリクエスト
このリクエストモジュールによって、ウェブページからHTMLコードを取得し、BeautfulSoupパッケージを使ってナビゲートできるようになる。私たちの作業をより簡単にする2つのコマンドは以下の通りです。
find_all(要素 tag, attribute):この関数はtagとattributeをパラメータとして取り、ウェブページから任意のHTML要素を見つけることができます。この関数は、同じ型の要素をすべて特定します。代わりにfind()を使えば、最初の要素だけを見つけることができます。
get_text():指定した要素を見つけたら、このコマンドで内部のテキストを取り出します。
ウェブページのHTMLコードをナビゲートし、スクレイピングしたい要素を見つけるには、ページ上で右クリックするか、単にCtrl+Fを押すことで「inspect element」オプションを使うことができる。これでウェブページのソースコードを見ることができる。
目的の要素を見つけたら、requestsモジュールでHTMLコードを取得し、それらの要素を抽出するためにBeautifulSoupを使用する。
この記事では、ELパリ英字新聞を使用する。一面からニュース記事のタイトルをスクレイピングし、次に本文をスクレイピングする。
ニュース記事のHTMLコードを調べてみると、トップページの記事は次のような構造になっていることがわかる、
The title has <h2> element with itemprop=”headline” and class=”articulo-titulo” attributes. It has an href attribute containing the text. So we will now extract the text using the following commands:
インポートリクエスト
frombs4importBeautifulSoup
requestsモジュールを使ってHTMLコンテンツを取得したら、それをcoverpage変数に保存することができる:
# リクエスト
r1 = requests.get(url)
r1.status_code
# カバーページの内容をcoverpageに保存する
カバーページ = r1.content
次に、スープ変数を定義する、
# スープの作成
soup1= BeautifulSoup(coverpage,'html5lib')
次のコードで、探している要素を見つける、
# ニュースの識別
coverpage_news= soup1.find_all('h2', class_='articulo-titulo')
final_allを使うと、すべての出現回数を取得することになる。したがって、各項目がニュース記事であるリストを返さなければならない、
テキストを抽出するために、以下のコマンドを使用する:
coverpage_news[4].get_text()
属性(ここではリンク)の値にアクセスしたい場合は、以下のコマンドを使うことができる、
coverpage_news[4]['href']
これでリンクをプレーンテキストで取得できる。
ここまでの概念をすべて理解していれば、自分の好きなコンテンツをウェブスクレイピングすることができる。
次のステップでは、href属性でニュース記事の各コンテンツにアクセスし、ソースコードを取得してHTMLコードの段落を見つけ、最後にBeautifulSoupで取得する。上で説明したのと同じプロセスだが、ニュース記事のコンテンツを識別するタグと属性を定義する必要がある。
全機能のコードを以下に示す。コードがコメントされているので、各行を個別に説明することはしない。コメントを読めば明確に理解できるだろう。
記事数=5
# コンテンツ、リンク、タイトルのための空のリスト
news_contents = [] (ニュース・コンテンツ)
list_links = [].
リスト_タイトル = [].
forninnp.arange(0, number_of_articles):
# ニュース記事のみ(アルバムなどもある)
if "inenglish"notincoverpage_news[n].find('a')['href']:
続ける
# 記事のリンクを取得する
link= coverpage_news[n].find('a')['href']。
list_links.append(link)
# タイトルの取得
title = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# コンテンツを読む(段落で分割されている)
article = requests.get(リンク)
article_content = article.content
soup_article = BeautifulSoup(article_content,'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# 段落を統一する
list_paragraphs = [].
forpinnp.arange(0, len(x)):
パラグラフ = x[p].get_text()
list_paragraphs.append(paragraph)
final_article =".join(list_paragraphs)
news_contents.append(final_article)
抽出された記事を以下に並べてみよう:
# df_features
df_features = pd.DataFrame(
{'Article Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links})
df_features
df_show_info
より良いユーザー体験を定義するために、スクリプトがニュースを取得するのにかかる時間も測定する。そのための関数を定義し、呼び出す。繰り返しになるが、コードにはコメントが付けられているので、一行一行の説明は省略する。明確な理解を得るためには、それらのコメントを読んでいただきたい。
def get_news_elpais():
# url definition
url = "https://elpais.com/elpais/inenglish.html"
# Request
r1 = requests.get(url)
r1.status_code
# We'll save in coverpage the cover page content
coverpage = r1.content
# Soup creation
soup1 = BeautifulSoup(coverpage, 'html5lib')
# News identification
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
len(coverpage_news)
number_of_articles = 5
# Empty lists for content, links and titles
news_contents = []
list_links = []
list_titles = []
for n in np.arange(0, number_of_articles):
# only news articles (there are also albums and other things)
if "inenglish" not in coverpage_news[n].find('a')['href']:
continue
# Getting the link of the article
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# Getting the title
title = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# Reading the content (it is divided in paragraphs)
article = requests.get(link)
article_content = article.content
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# Unifying the paragraphs
list_paragraphs = []
for p in np.arange(0, len(x)):
paragraph = x[p].get_text()
list_paragraphs.append(paragraph)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
# df_features
df_features = pd.DataFrame(
{'Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links,
'Newspaper': 'El Pais English'})
return (df_features, df_show_info)
ProxyScrapeは、オンラインで最も人気があり、信頼性の高いプロキシプロバイダの1つです。3つのプロキシサービスは、専用のデータセンタープロキシサーバ、住宅プロキシサーバ、およびプレミアムプロキシサーバを含む。では、pythonを使ったニュース記事のウェブスクレイピングに最適なHTTPプロキシは何が考えられるでしょうか?その質問に答える前に、それぞれのプロキシサーバーの特徴を見るのが一番です。
データセンター専用プロキシ は、分析目的で様々なサーバーから大量のデータ(サイズ的に)をストリーミングするような高速オンライン作業に最適です。これは、組織が短時間で大量のデータを送信するために専用プロキシを選択する主な理由の1つです。
データセンター専用プロキシには、無制限の帯域幅と同時接続、簡単な通信のための専用HTTPプロキシ、より高いセキュリティのためのIP認証など、いくつかの特徴があります。99.9%のアップタイムで、専用データセンターはどのようなセッションでも常に動作するので安心です。最後になりますが、ProxyScrape は優れたカスタマーサービスを提供しており、24~48営業時間以内に問題を解決するお手伝いをいたします。
次は 住宅用プロキシである。 住宅用プロキシは、すべての一般消費者にとって頼りになるプロキシである。主な理由は、住宅用プロキシのIPアドレスがISPから提供されるIPアドレスに似ているからである。つまり、ターゲットサーバーからそのデータにアクセスする許可を得るのが通常より簡単になる。
ProxyScrapeの住宅用プロキシのもう一つの特徴は、ローテーション機能です。ローテーションプロキシは、レジデンシャルプロキシが動的にあなたのIPアドレスを変更するため、ターゲットサーバがあなたがプロキシを使用しているかどうかをチェックすることが困難になるため、アカウントの永久BANを回避するのに役立ちます。
それとは別に、住宅用プロキシの他の機能は次のとおりです。無制限の帯域幅、同時接続、専用のHTTP / sプロキシ、プロキシプール内の700万人以上のプロキシのため、いつでもセッションでプロキシ、より多くのセキュリティのためのユーザー名とパスワード認証、そして最後には、国のサーバーを変更する機能。ユーザー名認証に国コードを追加することで、ご希望のサーバーを選択できます。
最後のものは プレミアムプロキシである。プレミアムプロキシはデータセンター専用プロキシと同じです。機能は変わりません。主な違いはアクセシビリティです。プレミアムプロキシでは、プロキシリスト(プロキシを含むリスト)はProxyScrape'のネットワーク上のすべてのユーザーが利用できるようになります。そのため、プレミアムプロキシはデータセンター専用プロキシよりも安価です。
では、pythonを使ったニュース記事のウェブスクレイピングに最適なHTTPプロキシは何か?答えは"レジデンシャルプロキシ."理由は簡単だ。上で述べたように、レジデンシャルプロキシはローテーションプロキシであり、IPアドレスが一定期間にわたって動的に変更されるため、IPブロックを受けることなく、わずかな時間内に多くのリクエストを送信してサーバーをだますのに役立つ。
次に、国によってプロキシサーバーを変更するのがベストでしょう。IP認証またはユーザー名とパスワードによる認証の最後に、その国のISO_CODEを追加するだけです。
お勧めの本
この記事では、Webページのフロー設計と構造の基本を理解することで、Webスクレイピングの基本を見てきた。また、ニュース記事からデータを抽出することで、実際に体験してみた。ウェブスクレイピングは、正しく行えば素晴らしい効果を発揮する。例えば、抽出されたデータをもとに、カテゴリーを予測したり、ユーザーに要約を表示したりするような、完全に最適化されたモデルを作ることができる。最も重要なことは、要件を把握し、ページの構造を理解することだ。Pythonには、好みのデータを抽出するための、非常に強力で使いやすいライブラリがいくつかある。そのおかげでウェブスクレイピングはとても簡単で楽しいものになりました。
重要なのは、このコードはこの特定のウェブページからデータを抽出するのに役立つということだ。他のページからデータを取り出したい場合は、そのページの構造に合わせてコードを最適化する必要がある。しかし、一度識別方法がわかれば、プロセスはまったく同じだ。
この記事では、pythonを使ったニュース記事のウェブスクレイピングの実践的なアプローチについて詳しく説明したい。覚えておくべきことの一つは、ウェブスクレイピングにはプロキシが絶対に必要だということです。これはターゲットサーバーからのIPブロックを防ぐのに役立ちます。 ProxyScrapepythonを使ったニュース記事のWebスクレイピングプロジェクトでは、信頼性の高い住宅用プロキシを提供します。