Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 9, 2012 16:56:05

webstghost
Зарегистрирован: 2012-06-02
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

spynner + Referer + socks

В документации к spynner не обнаружены возможности задать свой Referer и работать с socks. Посоветуйте с какой стороны проше подступиться к искоренению этих недостатков? socks списком, планируется использовать multiprocessing, и нужна возможность менять socks для каждого нового процесса. Очень простая и приятная реализация этих вещей в grab.

Офлайн

#2 Июнь 11, 2012 14:48:56

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

spynner + Referer + socks

Про spynner не знаю, могу лишь посоветовать selenium, там можно юзать соксы (если без авторизации). И user-agent можно задать. Обе задачи решаются с помощью настроек профиля firefox.

Офлайн

#3 Июнь 22, 2012 14:34:12

webstghost
Зарегистрирован: 2012-06-02
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

spynner + Referer + socks

selenium ковырял, неного не то.
Так и не удалось решить с socks. Вроде функционал есть, хоть и отсутствует в документации:

#{ Proxies
    def get_proxy(self):
        """Return string containing the current proxy."""
        return self.manager.proxy()
    def set_proxy(self, string_proxy):
        """Set proxy [http|socks5]://username:password@hostname:port"""
        urlinfo = urlparse.urlparse(string_proxy)
        proxy = QNetworkProxy()
        if urlinfo.scheme == 'socks5' :
                proxy.setType(1)
        elif urlinfo.scheme == 'http' :
                proxy.setType(3)
        else :
                proxy.setType(2)
                self.manager.setProxy(proxy)
                return self.manager.proxy()
        proxy.setHostName(urlinfo.hostname)
        proxy.setPort(urlinfo.port)
        if urlinfo.username != None :
                proxy.setUser(urlinfo.username)
        else :
                proxy.setUser('')
        if urlinfo.password != None :
                proxy.setPassword(urlinfo.password)
        else :
                proxy.setPassword('')
        self.manager.setProxy(proxy)
        return self.manager.proxy()
    #}
Но как это использовать не очень понятно, пляски с бубном не привели к результату. Ошибок не выдает, прокси не использует. Недопилен или я неправильно делаю. Проект похоже заброшен…

Отредактировано webstghost (Июнь 22, 2012 14:35:46)

Офлайн

#4 Июнь 23, 2012 10:56:39

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

spynner + Referer + socks

Я ковырял чуток spynner и Ghost.py - оба проекта произвели впечатление, что там ещё много пилить. Собсно, вы код видели, он не такой уж и большой там. А чем selenium не устраивает?

Офлайн

#5 Июнь 24, 2012 19:16:50

webstghost
Зарегистрирован: 2012-06-02
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

spynner + Referer + socks

lorien
А чем selenium не устраивает?
Мне не удалось заставить его функционировать на машине без x-ов в связке с QtWebKit.

Офлайн

#6 Июнь 24, 2012 19:47:59

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

spynner + Referer + socks

webstghost
lorien
А чем selenium не устраивает?
Мне не удалось заставить его функционировать на машине без x-ов в связке с QtWebKit.
Что такое связка селеним и QtWebkit, не знаю, но на машине без иксов он запускается без проблем в Xvfb

Отредактировано lorien (Июнь 24, 2012 19:48:15)

Офлайн

#7 Июнь 24, 2012 20:27:51

webstghost
Зарегистрирован: 2012-06-02
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

spynner + Referer + socks

lorien
Что такое связка селеним и QtWebkit, не знаю, но на машине без иксов он запускается без проблем в Xvfb
У меня уже на стадии при запуске в Xvfb:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
browser = webdriver.Firefox()
Начинают лезть ошибки:
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    browser = webdriver.Firefox()
  File "/usr/lib/python2.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 51, in __init__
    self.binary, timeout),
  File "/usr/lib/python2.6/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/lib/python2.6/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 44, in launch_browser
    self._wait_until_connectable()
  File "/usr/lib/python2.6/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 81, in _wait_until_connectable
    self._get_firefox_output())
selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited before we could connect. The output was: Xlib:  extension "RANDR" missing on display ":99.0".\n\n(firefox:8355): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type=\'PangoRenderFc\', script=\'common\'\n*** LOG addons.xpi: startup\n*** LOG addons.xpi: checkForChanges\n*** LOG addons.xpi: Opening database\n*** LOG addons.xpi: No changes found\nGConf Error: Failed to contact configuration server; some possible causes are that you need to enable TCP/IP networking for ORBit, or you have stale NFS locks due to a system crash. See http://projects.gnome.org/gconf/ for information. (Details -  1: Failed to get connection to session: /bin/dbus-launch terminated abnormally without any error message)\nFailed to dlopen /usr/lib/libX11.so.6\ndlerror says: /usr/lib/libX11.so.6: wrong ELF class: ELFCLASS32\n'
А spynner отрабатывает нормально.

Отредактировано webstghost (Июнь 24, 2012 20:32:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version