私はウェブサイトからデータをスクレイピングする練習をしています。たとえば、ZocDocです。私はすべての保険業者とその計画のリストを取得しようとしています(あなたは保険のドロップダウンでホームページにこの情報にアクセスできます)。スクラップウェブページは作成されていませんが、DOMにはデータはありません
ページが読み込まれると、すべてのデータが<scipt>
タグで読み込まれているようです。ネットワークタブを見ると、プラン名を含むJSONを返すネットワークコールはないようです。私は次のものを使ってすべての保険プランを手に入れることができます(それは面倒ですが、それは機能します)。
import requests
from bs4 import BeautifulSoup as bs
resp = requests.get('https://zocdoc.com')
long_str = str(soup.findAll('script')[17].string)
pop = data.split("Popular Insurances")[1]
json.loads(pop[pop.find("[["):pop.find("]]")+2])
返されたHTMLに保険プランはありません。また、計画が戻ってきたネットワークタブには要求が表示されません(バックボーンファイルがいくつかあります)。 1つのURLがエンコードされているように見えますが、それはそれであると私は確信していません。私はちょうどこれを思っています。url
私はまた、すべてのJSがロードされるのを待って、dryscrapeを使用してデータがDOM内にあるようにしましたが、HTMLにはまだ計画はありません。
クローラが各保険会社をクリックして計画を立てることなく、この情報を収集する方法はありますか?
あなたが投稿したURLはエンコードされています。これは単にテキストの序数です。情報内の外側の 'eval 'を' console.log'に変更することで戻すことができます。それはより多くの機能を返すでしょう。最後に 'eval( 'String.fromCharCode(' + z + '))の代わりに' console.log(eval(' String.fromCharCode( '+ z +') '));}) '));})() ' –
@CoryShayそれを指摘してくれてありがとう。それはクッキーのように見える – user2954587