У меня были хорошие (хотя и медленные) результаты с использованием mechanize и BeautifulSoup. Фактически, чтобы сэкономить пространство кода в Google App Engine, я использую (старую) версию BeautifulSoup, включенную в Mechanize.
У меня есть механизация в zip-файле, mechanize.zip
. Индекс этого zip-файла выглядит так:
mechanize/
mechanize/__init__.py
mechanize/_auth.py
mechanize/_beautifulsoup.py
mechanize/_clientcookie.py
... etc
Тогда в моем коде Python,
import sys
sys.path.insert(0, 'mechanize.zip')
import mechanize
from mechanize._beautifulsoup import BeautifulSoup