2

私はscrapyでスパイダーを書いていますが、jsでレンダリングされたWebサイトに出くわしたため、urllib2.open_urlが機能しません。webbrowser.open_new(url)でブラウザを開くことができましたが、webbrowserでページのsrcコードを取得する方法が見つかりませんでした。webbrowserでこれを行うために使用できる方法はありますか、またはjsサイトを処理するためのwebbrowserなしの他のソリューションはありますか?

4

4 に答える 4

5

そこで利用可能な Webkit エンジンでスクレーパーを使用できます。

それらの1つはドライス​​クレイプです。

例:

import dryscrape

search_term = 'dryscrape'

# set up a web scraping session
sess = dryscrape.Session(base_url = 'http://google.com')

# we don't need images
sess.set_attribute('auto_load_images', False)

# visit homepage and search for a term
sess.visit('/')
q = sess.at_xpath('//*[@name="q"]')
q.set(search_term)
q.form().submit()

# extract all links
for link in sess.xpath('//a[@href]'):
  print link['href']

# save a screenshot of the web page
sess.render('google.png')
print "Screenshot written to 'google.png'"

詳細については、次を参照してください。

https://github.com/niklasb/dryscrape
https://dryscrape.readthedocs.org/en/latest/index.html

于 2013-01-11T03:14:43.640 に答える
1

数日間、同じ問題に対する答えを見つけようとしています。

WebKitでQT フレームワークを試すことをお勧めします。2 つの Python バインディングがあります。1 つはPyQtで、もう 1 つはPySideです。より複雑なものを作成したい場合や、コードを 100% 制御したい場合は、それらを直接使用できます。

ブラウザ環境で JavaScript を実行するような些細なことには、Ghost.pyを使用できます。コマンドラインから使用する場合、ある種のドキュメントといくつかの問題がありますが、それ以外は素晴らしいです。

于 2013-01-12T15:10:22.757 に答える
1

完全な js エンジンが必要な場合は、Python から webkit を駆動する方法がいくつかあります。最近まで、この種のことはSeleniumで行われていました。Selenium はブラウザー全体を駆動します。

最近では、Webkit エンジン (v8 JavaScript エンジンを含む) を Python から実行するための、より新しく簡単な方法があります。この SO の質問を参照してください: Python 用のヘッドレス ブラウザ (Javascript のサポートが必要です!)

これは、このブログを Webkit を使用した Javascript Web ページのスクレイピングの例として参照しています。多かれ少なかれ、必要なことだけを行うように見えます。

于 2013-01-11T03:29:53.687 に答える
0

JavaScript を処理する必要がある場合は、JavaScript エンジンを実装する必要があります。これにより、スパイダーがより複雑になります。主な理由は、JavaScript はほとんどの場合、時間またはユーザーのアクションに基づいて DOM を変更するためです。これにより、クローラーで JS を処理することが非常に困難になります。スパイダーで JavaScript を処理する必要がある場合は、Mozilla の JavaScript エンジンを参照してください: https://developer.mozilla.org/en/docs/SpiderMonkey

于 2013-01-11T03:06:47.920 に答える