2017-11-13 9 views
0

私はrvestを使用してhttps://www.psychologytoday.com/ca/therapists/m5gからスクレイプしています。特に、私が後にしているのは、タグのdata-myurl html属性で、id="results-page"です。ソースを見るとdivid="results-page"の1つだけが表示されます。 data-myurl属性は、ピリオドで区切られた数字の文字列の追加を除いて、メインURLのように見え、アンダースコア、そうrvestを使用しているときに不完全なhtml属性

<div id="results-page" data-myurl="https://www.psychologytoday.com/ca/therapists/m5g?sid=1510588046.3852_2969"> 

ようにあなたが見る数字はおそらく異なるだろう。

require(rvest) 
fsa <- read_html('https://www.psychologytoday.com/ca/therapists/m5g') 
fsa %>% html_node('div #results-page') %>% html_attr("data-myurl") 

しかし、これが唯一の

[1] "https://www.psychologytoday.com/ca/therapists/m5g" 

だから、すべてが元のURLの後に不足して返します。それを試してみて抽出するには、私は次のコードを使用します。ソースを見ると、scriptタグが表示されないので、JSのようには見えません。 URLにあるこれらの数字が実際にどのようなもので、どのようにそれらを抽出するのか誰にも分かりますか?ありがとう!

+0

なぜあなたは、番号を抽出しようとしていますか?ページ内のコンテンツに関する情報は含まれていません。 – Jai

+0

リストの一番下にある「次へ」ボタンをクリックして次の20個以下のエントリにアクセスすると、その次のページのURLに数字が表示されます。最初のページから数字を取得することができたら、後で直接ページにアクセスすることができます – panzerotti

+0

- その番号なしで次のページにアクセスできます - https://www.psychologytoday.com/ca/therapists/m5g?rec_next=21であなたを取得します – Jai

答えて

0

rvestでこれを行うことはできません。

スクラップしようとしているページは、最初のページを読み込んだ後に動的にレンダリングされます。コンテンツ自体は常に同じですが、ページ番号を読み込んだ後に、結果の順序が変更されます。 sidは訪問とページの再読み込みごとに変わります。

私は、セラピストを探すときに市場の偏見を避けるためにこれが行われたと考えています。

本当にsid番号が必要な場合は、casperjsのような動的ページを扱うツールを使用する必要があります。 (http://casperjs.org/

編集:また

、それはRで行わなければならない場合、あなたはRSeleniumを使用することができます。 (https://cran.r-project.org/web/packages/RSelenium/

関連の出発点は、ここでは次のようになります。 https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-headless.html

+0

彼らが役立っている目的を知って良い、リンクのおかげで – panzerotti

関連する問題