2016-04-08 1 views
2

通常のスニペットを使ってスープを作成します。ジョブが完了しました。Beautiflsoupは、ページのソース

しかし、私はロットのデータを持っているサイトを扱っています。それは既にロードされているので、ロード時間を心配する必要はありませんが、私は本当のキラーが私のfind_allを見ている必要はないページソースを通過していると思います。

私が一度探しているデータを絞り込むことができるのは分かっています。私はクラスなどに移動してスープを作りました。それは動作していますが、かなり遅いです。実際には、page_sourceでスープを作成することさえかなり遅いです。

私は成功せず

スープ= BeautifulSoup(driver.find_element_by_class_name( '箱')、 "html5lib")のバリエーションを試してみました。すべてのソースコードを調べることなく、このようなことをすることは可能でしょうか?私はいくつかの形式では、私はそれを見てみたいクラスを見つけるためにまだソースをロードする必要がありますね。しかし、小さなスープは、ダウンロード後にナビゲートする方が速いかもしれません。

私はここで正しい方向に私を指すことができます誰でも感謝します。

TL; page_sourceの私のスープは、セレンでナビゲートするには時間がかかります。ナビゲーションする前にスープを特定のクラス名などに限定することはできますか?

答えて

2

確かに、これはSoupStrainerが何であるかを正確です:

SoupStrainerクラスは、あなたが入ってくる文書の一部が解析されるかを選択することができます。

​​:スピードは本当に重要ならば、 html5libから lxml.htmlパーサへの切り替えを検討し、サイドノートとして

from bs4 import BeautifulSoup, SoupStrainer 

only_box = SoupStrainer(class_="box") 
BeautifulSoup(driver.page_source, "html5lib", parse_only=only_box) 

:あなたはBeautifulSoupboxクラスを持つ要素のみを解析する場合、例えば

+0

完璧!あなたは今晩自分の人生をどれだけ良くしたか分かりません。そして、lxmlには行きますが、html5libが拾うようなものは見逃しがちです。 – PoweredByCoffee

関連する問題