2017-08-06 17 views
1

私は、JSの人が住んでいるウェブサイトを掻き集めるという目的で、dryscrapeとubuntu 16.04サーバー(デジタル海洋にクリーンインストール)を実装する際に問題があります。drysrape install Ubuntuのサーバ16.04

私はdryscrapeがhereから命令をインストールし、次のよ:

apt-get update 
apt-get install qt5-default libqt5webkit5-dev build-essential \ 
        python-lxml python-pip xvfb 

pip install dryscrape 

、その後、私は同じリンクでhereだけでなく、テストのhtmlページを発見した次のPythonスクリプトを実行しています。 (これは、HTMLやJSを返す)

Pythonの

import dryscrape 
from bs4 import BeautifulSoup 
session = dryscrape.Session() 
my_url = 'http://www.example.com/scrape.php' 
session.visit(my_url) 
response = session.body() 
soup = BeautifulSoup(response) 
soup.find(id="intro-text") 

HTML - scrape.php

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Javascript scraping test</title> 
</head> 
<body> 
    <p id='intro-text'>No javascript support</p> 
    <script> 
    document.getElementById('intro-text').innerHTML = 'Yay! Supports javascript'; 
    </script> 
</body> 
</html> 

私が行うと私は予想戻りデータを取得するように見えることができません、代わりにそれは単なるエラーです。

紛失していることが明らかなものがあるのでしょうか?

注:私は多数のインストールガイド/スレッドをトロールしており、動作させられないようです。私もセレンを使用しようとしましたが、どちらかと一緒にセレンを得ることはできません。どうもありがとう。

出力

Traceback (most recent call last): 
    File "js.py", line 3, in <module> 
    session = dryscrape.Session() 
    File "/usr/local/lib/python2.7/dist-packages/dryscrape/session.py", line 22, in __init__ 
    self.driver = driver or DefaultDriver() 
    File "/usr/local/lib/python2.7/dist-packages/dryscrape/driver/webkit.py", line 30, in __init__ 
    super(Driver, self).__init__(**kw) 
    File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 230, in __init__ 
    self.conn = connection or ServerConnection() 
    File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 507, in __init__ 
    self._sock = (server or get_default_server()).connect() 
    File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 450, in get_default_server 
    _default_server = Server() 
    File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 424, in __init__ 
    raise NoX11Error("Could not connect to X server. " 
webkit_server.NoX11Error: Could not connect to X server. Try calling dryscrape.start_xvfb() before creating a session. 

ワーキングスクリプト

import dryscrape 
from bs4 import BeautifulSoup 

dryscrape.start_xvfb() 
session = dryscrape.Session() 
my_url = 'https://www.example.com/scrape.php' 
session.visit(my_url) 
response = session.body() 
soup = BeautifulSoup(response, "html.parser") 
print soup.find(id="intro-text").text 

答えて

1

あなたは何のXサーバを実行しているん。手がかりはありません、他のX必要に応じxvfb_(http://dryscrape.readthedocs.io/en/latest/usage.html

if 'linux' in sys.platform: 
    # start xvfb in case no X is running. Make sure xvfb 
    # is installed, otherwise this won't work! 
    dryscrape.start_xvfb() 

http://dryscrape.readthedocs.io/en/latest/installation.html

を参照してください

セッションを作成する前にdryscrape.start_xvfb()を呼び出してみ

ですサーバーが利用可能)

だから、あなただけ追加することができます。

dryscrape.start_xvfb() 

前:このため

session = dryscrape.Session() 
+0

おかげで、私は私の答えの下に更新/作業Pythonスクリプトに追加しました。私が追加する必要があったのは、 'soup = BeautifulSoup(response、" html.parser ")の中にhtmlパーサを指定することだけでした。私は4時間読んで昨日解決しようとしていたので本当に助けてくれてありがとう。 – denski