JavaScriptレンダリングされたページをクロールしようとして問題が発生しました。Pythonクロールペーストビン(JavaScriptレンダリングされたWebページ)
私はこのチュートリアル以下、のpython-のqt4モジュールを使用しています:チュートリアルでhttps://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/
、すべては例のページで完璧に動作します:http://pycoders.com/archive
しかし、私はこれで、ペーストビンでこれをしようとしていますURL:私は何をしようとしています
http://pastebin.com/search?q=ssh
(私は私が何を知っていないそれらをクリックするために、すべてのリンクを取得するだけでなく、ページをたどることができるようにすることですまだ使用するつもり、おそらくScrapyが、私は他のオプションを見てみたい)。
問題は、私はリンクを抽出することはできませんよということで、これは私のコードです:
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
#Take this class for granted.Just use result of rendering.
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://pastebin.com/search?q=ssh'
r = Render(url)
result = r.frame.toHtml()
formatted_result = str(result.toAscii())
tree = html.fromstring(formatted_result)
archive_links = tree.xpath('//a[@class="gs-title"]/@data-ctoring')
for i in archive_links:
print i
結果は次のとおりです。私は何も得ることはありません。
このソリューションはかなり良いです。どうやって10ページに渡ってURLを抽出できますか?基本的に、物事をクリックする方法。ありがとうございました – aDoN
ところで、私はこの行が何をしているのかよくわかりません: 'wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR、" .gsc-result-info ")))' – aDoN
@aDoNフォローアップ問題のために別の質問。この行は、特定の要素が表示されるのを待つのに役立ちます。http://selenium-python.readthedocs.org/waits.html#explicit-waitsを参照してください。ありがとう。 – alecxe