私はYahooからいくつかのデータを削り取ろうとしています。私は動作するスクリプトを書いています - 時にはいくつか。スクリプトを実行すると、完全なページをダウンロードすることができます - そのほかの回、ページが部分的にしかロードされず、データ部分が欠落しています。DryscrapeとBeautifulSoupを使ったウェブの掻き取り
さらに複雑なことは、ブラウザでそのページに移動すると、ページ全体が表示されることです。ここで
は、私のコードの要旨です:
import dryscrape
from bs4 import BeautifulSoup
url = 'http://finance.yahoo.com/quote/SPY/options?p=SPY&straddle=false'
sess = dryscrape.Session()
sess.set_header('user-agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0')
sess.set_attribute('auto_load_images', False)
sess.set_timeout(360)
sess.visit(url)
soup = BeautifulSoup(sess.body(), 'lxml')
# Related to memory leak issue in webkit
sess.reset()
# Barfs (sometimes!) at the line below
sel_list = soup.find('select', class_='Fz(s)')
if sel_list is None or len(sel_list) == 0:
print('element not found on page!')
私は、ページの画像を添付した下記のフェッチ。インターネット上で見たときにここでは、Webページは、Webブラウザを介して、次のとおりです - そしてそれはデータがない
さて、ここで私は上に示したのと同様のスクリプトを介して、プルダウンページです!:
データは私のスクリプトによってフェッチされたときに要素が時々不足している理由を誰もがうまくできますか?同じように(もっと?)重要なことに、どうすればこの問題を解決できますか?
それはJavascriptを使用してデータの束をダウンロードすることができる、そしてあなたのスクリプトは、Javascriptを実行しません。ブラウザでJavascriptを無効にして、ブラウザがまだデータを取得しているかどうかを確認してください。 – LarsH
URLをプルダウンしてからソースをbs4にロードするまでの間に小さな遅延を追加しようとしましたか? – jinksPadlock