。以下の方法があります:","クランチベース","会社概要","素晴らしいサポートをありがとう!","クイックリンク","アフィリエイト・プログラム","プレミアム","ProxyScrape プレミアムトライアル","プロキシの種類","代理国","プロキシの使用例","重要","クッキーポリシー","免責事項","プライバシーポリシー","ご利用条件","ソーシャルメディア","フェイスブック","リンクトイン","ツイッター","クオラ","テレグラム","ディスコード","\n © Copyright 2024 -Thib BV| Brugstraat 18 | 2812 Mechelen | ベルギー | VAT BE 0749 716 760\n"]}
今日の世界では、誰もが新しいテクノロジーを活用している。ウェブスクレイピングの助けを借りて、自動化された方法で構造化データにアクセスすることができます。例えば、ウェブスクレイピングを利用することができる:エンドレススクロールとしても知られる無限スクロールは、ウェブサイトがAJAXやJavascriptを使用してよく使用するウェブデザインのテクニックです。
今日の世界では、誰もが新しいテクノロジーを活用している。ウェブスクレイピングの助けを借りて、自動化された方法で構造化データにアクセスすることができます。例えば、あなたはウェブスクレイピングを利用することができる:
エンドレススクロールとも呼ばれる無限スクロールは、ウェブデザインのテクニックのひとつで、AJAXやJavascriptと併用することで、ユーザーがウェブページの下までスクロールしたときに、追加コンテンツを動的に読み込むことができる。このテクニックは、ソーシャルメディアサイトでの成功により人気を博した。例えば、ツイッターの無限スクロールは、非同期ローディングによって実現されている。Twitterは、ページが読み込まれた後にAJAXコールを行い、スクロールに合わせて新しいコンテンツを追加し続ける。無限スクロールには多くの利点があるが、特定のコンテンツを見つけなければならないような、目標指向の検索作業にはお勧めできない。
まず、無限スクロールのページをスクレイピングすることの利点を理解しよう。
無限スクロールのページをスクレイピングする理由は以下の通り。
無限スクロールのページをスクレイピングする上記の利点とは別に、以下のような短所もある:
Pythonを使って無限スクロールのページをスクレイピングする方法を見てみよう。
Seleniumライブラリをインポートする必要があります。
fromseleniumimportwebdriver
fromselenium.webdriver.common.keysimportKeys
インポート時間
ここで、使用するブラウザを選択する必要がある。FirefoxよりChromeの方がオプションが多いので、Chromeを使うことにする。
defget_selenium():
オプション= webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
return(driver)
上記のヘッドレス引数はかなり重要です。SeleniumはPythonのヘッドレス実行時にChromeを新しいウィンドウで開きません。しかし、スクレイピング中に問題が発生した場合、headlessオプションをコメントすることで、Chromeで何が起こっているのか、ページに何が読み込まれているのかを確認することができます。
ignore-certificate-errorsとincognitoの2つのフラグは省略できる。
キャプチャやクッキー・バナーが表示されてページが読み込めない場合は、OKをクリックして普通にページに進むことができる。しかし、ブラウザが予期せず閉じてしまった場合は、time.sleep()を使ってコードを一時停止し、デバッグのための十分な時間を取ることができます。
無限スクロールを修正するには、ページのHTML構造を調べ、以下の手順を踏む必要があります。
以下の例を参考にしてほしい。
selenium = get_selenium()
selenium.get("your/url")
last_elem ='';
while True:
current_last_elem ="#my-div > ul > li:last-child"
scroll ="document.querySelector(♪'+ current_last_elem +"♪').scrollIntoView();"
selenium.execute_script(スクロール)
time.sleep(3)
if(last_elem == current_elem)
ブレーク
else
last_elem = current_elem
上記のコードでは、Pythonの中でjQueryとJavascriptを使っている。
ここだよ、
selenium.get("あなたの/url.com/{0}".format(キーワード))
"document.querySelector(\') + .. + "document.querySelector( \').scrollIntoView();"
ここでは、書式が正しくなければならないので、一重引用符と二重引用符、そしてエスケープ文字に注意する必要がある。
無限スクロールを行う際によく発生する問題には、以下のようなものがある:
Pythonの中からjsスクリプトをトリガーし、結果としてリストを取得することが可能です。
例えば、以下のコードを使って、ページ上のすべての画像からソースを取得することができる。
js_script='''٩(*´꒳`*)۶''
var jslist = [].
document.querySelectorAll('img').forEach(i => jslist.push(i.src));
jslist を返します;
'''
python_list= selenium.execute_script(js_script)
上記のコードでは
同じ方法をhrefリンクにも使うことができる:
その後、selenium.execute_script()でスクリプトを実行することができます。jsによって返された値をpython変数、すなわちpython_listにストックすることができます。
これがPythonを使って無限スクロールのページをスクレイピングする方法だ。
プロキシは、リソースを要求するクライアントとリソースを提供するサーバーの間で仲介するサードパーティ製のサーバーであることはご存じでしょう。 SeleniumとPythonでプロキシを使いたい場合、次のコード行を使うことができます。
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s'% hostname +": "+port)
driver = webdriver.Chrome(chrome_options=chrome_options)
無限スクロールを処理するには、ビュー階層内のスクロール可能なビューのプログラムによるスクロールをサポートするscroll-proxyを使用できます。npmを使用している場合は、以下のコマンドを使用してscroll-proxyをインストールできます。ここではjsを使ってscroll-proxyの使い方を説明する。
npm installscroll-proxy--save
ScrollProxyをインストールしたら、以下のコードでScrollProxyオブジェクトをインスタンス化できます。
varmyScroll =new ScrollProxy();
ScrollProxy コンストラクタに引数を渡していないことがわかります。
しかし、ユーザーが特定のHTML要素内でスクロールしたときに更新を取得したい場合は、コンストラクタにその要素を渡す必要がある。
varmyDiv =document.querySelector('.scrollable');
varmyDivScroll =newScrollProxy(myDiv);
以下は、無限スクロールのスクレイピング中にプロキシを使用するいくつかの理由です。
ユーザーが特定の情報を探していない場合、無限スクロールが好まれることを説明した。常に新しいコンテンツを生成するニュースサイトやソーシャルメディアフィードは、無限スクロールの恩恵を受けることができます。一方、ビジネスページやEコマースサイトは、ユーザーが特定の情報を求めているため、無限スクロールには向いていません。さらに、Seleniumを使って無限スクロールページをスクレイピングする手順についても説明した。また、無限スクロールを処理するために、キャプチャを回避し、疑わしいヘッダーリクエストをフィルタリングするのに役立つ回転住宅プロキシを使用することもできます。
Pythonを使って無限スクロールページをスクレイピングする方法を理解していただけたでしょうか。