。以下の方法があります:","クランチベース","会社概要","素晴らしいサポートをありがとう!","クイックリンク","アフィリエイト・プログラム","プレミアム","ProxyScrape プレミアムトライアル","プロキシの種類","代理国","プロキシの使用例","重要","クッキーポリシー","免責事項","プライバシーポリシー","ご利用条件","ソーシャルメディア","フェイスブック","リンクトイン","ツイッター","クオラ","テレグラム","ディスコード","\n © Copyright 2024 -Thib BV| Brugstraat 18 | 2812 Mechelen | ベルギー | VAT BE 0749 716 760\n"]}
ウェブスクレイピングとは、インターネットからデータを抽出し、有意義な目的に利用する技術である。ウェブ・データ抽出やウェブ・データ・ハーベスティングと呼ばれることもある。初心者にとっては、インターネットからデータをコピーしてローカルに保存するのと同じです。ただし、手作業になります。ウェブスクレイピング
ウェブスクレイピングとは、インターネットからデータを抽出し、有意義な目的に利用する技術である。ウェブ・データ抽出やウェブ・データ・ハーベスティングと呼ばれることもある。初心者にとっては、インターネットからデータをコピーしてローカルに保存するのと同じです。しかし、これは手作業です。ウェブスクレイピングは、ウェブクローラーの助けを借りて動作する自動化されたプロセスです。ウェブクローラーはHTTPプロトコルを使ってインターネットに接続し、ユーザーが自動化された方法でデータを取得できるようにする。インターネットは肥沃な土壌であり、データは新しい油であると考えることができる。
インターネットからデータをスクレイピングして分析する能力は、あなたがデータサイエンティストであれ、エンジニアであれ、マーケターであれ、必要不可欠な技術となっている。ウェブスクレイピングが大いに役立つユースケースは様々あるだろう。この記事では、Pythonを使ってAmazonからデータをスクレイピングする。最後に、スクレイピングされたデータを分析し、一般人、データサイエンティスト、Eコマースストアを運営する人にとって、それがどれだけ重要かを見てみよう。
ちょっとした注意事項です:もしあなたがPythonやウェブスクレイピングに慣れていないなら、この記事を理解するのは少し難しいかもしれない。にある入門レベルの記事を一通り読んでから、この記事に来ることをお勧めします。 ProxyScrapeにある入門レベルの記事を読んでから、この記事に来ることをお勧めします。
さっそくコードを書いてみよう。
まず最初に、コードに必要なすべてのライブラリをインポートする。これらのライブラリーは、データのスクレイピングとビジュアライズに使用される。それぞれの詳細を知りたい場合は、公式ドキュメントを参照してほしい。
pandas を pdとして インポートする
npとしてnumpy をインポート
importmatplotlib.pyplotasplt
importseabornassns
matplotlib インライン
インポートre
importtime
fromdatetimeimportdatetime
importmatplotlib.datesasmdates
importmatplotlib.tickerasticker
fromurllib.requestimporturlopen
frombs4importBeautifulSoup
インポートリクエスト
では、アマゾンのベストセラー本から有益な情報をスクレイピングしてみよう。スクレイピングするURLは以下の通り:
https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_’+str(pageNo)+’?ie=UTF8&pg=’+str(pageNo)
すべてのページにアクセスする必要があるので、各ページをループして必要なデータセットを取得する。
URLに接続し、HTMLコンテンツをフェッチするには、以下が必要である、
私たちの重要なデータが格納される重要なタグには、以下のようなものがある、
指定されたページを検査すると、親タグとそれに対応する要素が表示される。
特定の属性を調べたい場合は、それぞれの属性に移動して調べる。著者、書籍名、評価、価格、顧客の評価など、重要な属性が見つかります。
私たちのコードでは、amazonに登録していない著者に特別な調査結果を適用するために、入れ子になったif-else文を使用します。
no_pages = 2
def get_data(pageNo):
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept-Encoding":"gzip, deflate", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "DNT":"1","Connection":"close", "Upgrade-Insecure-Requests":"1"}
r = requests.get('https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_'+str(pageNo)+'?ie=UTF8&pg='+str(pageNo), headers=headers)#, proxies=proxies)
content = r.content
soup = BeautifulSoup(content)
#print(soup)
alls = []
for d in soup.findAll('div', attrs={'class':'a-section a-spacing-none aok-relative'}):
#print(d)
name = d.find('span', attrs={'class':'zg-text-center-align'})
n = name.find_all('img', alt=True)
#print(n[0]['alt'])
author = d.find('a', attrs={'class':'a-size-small a-link-child'})
rating = d.find('span', attrs={'class':'a-icon-alt'})
users_rated = d.find('a', attrs={'class':'a-size-small a-link-normal'})
price = d.find('span', attrs={'class':'p13n-sc-price'})
all1=[]
if name is not None:
#print(n[0]['alt'])
all1.append(n[0]['alt'])
else:
all1.append("unknown-product")
if author is not None:
#print(author.text)
all1.append(author.text)
elif author is None:
author = d.find('span', attrs={'class':'a-size-small a-color-base'})
if author is not None:
all1.append(author.text)
else:
all1.append('0')
if rating is not None:
#print(rating.text)
all1.append(rating.text)
else:
all1.append('-1')
if users_rated is not None:
#print(price.text)
all1.append(users_rated.text)
else:
all1.append('0')
if price is not None:
#print(price.text)
all1.append(price.text)
else:
all1.append('0')
alls.append(all1)
return alls
これは以下の機能を果たす、
for i in range(1,no_pages+1):
results.append(get_data(i))
flatten = lambda l:[item for sublist in l for item in sublist].
df = pd.DataFrame(flatten(results),columns=['Book Name','Author','Rating','Customers_Rated','Price'])
df.to_csv('amazon_products.csv', index=False, encoding='utf-8')
次にcsvファイルを読み込む、
df =pd.read_csv("amazon_products.csv")
df.shape
データフレームの形状は、CSVファイルに100行5列があることを示している。
データセットの5行を見てみよう、
df.head(61)
ここでは、rating、customers_rated、priceカラムの前処理を行う。
df['Rating']= df['Rating'].apply(lambda x: x.split()[0])
df['Rating']= pd.to_numeric(df['Rating'])
df["Price"]= df["Price"].str.replace('₹','')
df["Price"] = df["Price"].str.replace(',','')
df['Price']= df['Price'].apply(lambda x: x.split('.')[0])
df['Price']= df['Price'].astype(int)
df["Customers_Rated"]= df["Customers_Rated"].str.replace(',','')
df['Customers_Rated']= pd.to_numeric(df['Customers_Rated'], errors='ignore')
df.head()
データフレームのタイプを見てみよう、
上の出力には不完全な情報がある。まずNaNの数を数え、それから削除する。
df.replace(str(0), np.nan,inplace=True)
df.replace(0, np.nan,inplace=True)
count_nan = len(df) - df.count()
count_nan
df =df.dropna()
これから、最も高額な本を出版したすべての著者を知ることになる。その中からトップ20を紹介しよう。
data=data.sort_values(['評価'],axis=0,ascending=False)[:15].
データ
顧客評価の高い本と著者を表示します。レビュー数が1000未満の著者や本は除外され、最も有名な著者が表示されます。
data= df[df['Customers_Rated'] > 1000].
data=data.sort_values(['評価'],axis=0,ascending=False)[:15].
データ
上位にランクインしている本を可視化してみよう、
p = figure(x_range=data.iloc[:,0],plot_width=800,plot_height=600,title="顧客評価1000人以上の人気書籍",toolbar_location=None,tools="")
p.vbar(x=data.iloc[:,0],top=data.iloc[:,2],width=0.9)
p.xgrid.grid_line_color = None
p.y_range.start = 0
p.xaxis.major_label_orientation = math.pi/2
show(p)
評価が高ければ高いほど、顧客からの信頼も厚くなる。そのため、顧客から最も高い評価を得ている著者や書籍を追加すれば、より説得力が増し、信頼性が高まります。
from bokeh.transformimport factor_cmap
from bokeh.modelsimport レジェンド
from bokeh.palettesimport Dark2_5 as palette(パレットとしてDark2_5をインポート
インポート itertools
from bokeh.palettesimport d3
#colorsは プロットで使用できる色のリストです。
colors = itertools.cycle(palette)
パレット = d3['Category20'][20]
index_cmap =factor_cmap('Author', palette=palette、
factors=data["Author"])
p=figure(plot_width=700,plot_height=700, title = "トップ著者:評価 vs. 評価された顧客")
p.scatter('Rating','Customers_Rated',source=data,fill_alpha=0.6, fill_color=index_cmap,size=20,legend='Author')
p.xaxis.axis_label='RATING'
p.yaxis.axis_label='CUSTOMERS RATED'
p.legend.location='top_left'
表示(p)
この記事では、Amazonからデータを抽出するという非常に重要なユースケースを取り上げ、Webスクレイピングとは何かを見てきた。様々なamazonのページからデータを抽出するだけでなく、様々なPythonライブラリを使ってデータを可視化しました。この記事は上級レベルの記事であり、ウェブスクレイピングやデータ可視化の初心者には理解しにくいかもしれない。そのような方には、以下のスターターパックの記事をお勧めする。 ProxyScrape.ウェブスクレイピングは、あなたのビジネスを後押ししてくれるとても便利なテクニックだ。市場には素晴らしい有料ツールもあるが、自分でスクレイパーをコード化できるのに、なぜ有料なのか。上に書いたコードは、ページの構造が異なるため、すべてのウェブページで機能するとは限りません。しかし、もしあなたが上記のコンセプトを理解したのであれば、その構造に応じてコードを修正することで、どんなウェブページでもスクレイピングできるようになる。この記事が読者にとって興味深いものであれば幸いである。以上である。また次の記事でお会いしましょう!