drysrape установка сервера Ubuntu 16.04

У меня проблемы с реализацией dryscrape на сервере ubuntu 16.04 (чистая установка в цифровом океане) - с целью очистки веб-сайтов, заполненных JS.

Я следую инструкциям по установке dryscrape здесь:

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

pip install dryscrape

и затем запускаю следующий скрипт Python, который я нашел здесь, а также тестовую HTML-страницу по той же ссылке. (Возвращает HTML или JS)

питон

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-сервер. Ключ

Попробуйте вызвать dryscrape.start_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

xvfb_ (необходимо, только если другой X-сервер недоступен)

Так что вы можете просто добавить:

dryscrape.start_xvfb()

до:

session = dryscrape.Session()
Другие вопросы по тегам