Форум сайта python.su
Привет!
Пишу скриптик и есть необходимость фетчить код страницы с поисковой выдачи рутрекера.
Поисковая выдача выходит при помощи javascript кода.
Вот что делаю:
import urllib import urllib2 import cookielib searchText = 'Terminator' login = 'login' password = 'pwd' outf = 'test.txt' def main(): # login, password = args # prepare opener with cookie handling cookies = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies)) data = urllib.urlencode({'login_username': login, 'login_password': password, 'login': ''}) # login opener.open('http://login.rutracker.org/forum/login.php', data) # search on tracker sUrl = 'http://rutracker.org/forum/tracker.php?max=1&nm=%s' % searchText handle = opener.open(sUrl, data) page = handle.read() # # open torrent url # torrent_url = 'http://dl.rutracker.org/forum/dl.php?t=%s' % topic_id # handle = opener.open(torrent_url, data) # write it to output file out = open(outf, 'wb') out.write(page) out.close() return 0 main()
Офлайн
Ставишь себе сниффер или HttpFox и смотришь, в каком файле приходят результаты поиска.
И выкинь urllib и возьми что-нибудь нормальное, вроде requests или grab.
Офлайн
odnochlen
Ставишь себе сниффер или HttpFox и смотришь, в каком файле приходят результаты поиска.
И выкинь urllib и возьми что-нибудь нормальное, вроде requests или grab.
Офлайн
Не знаю где там Javascript, все нормально работает.
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import lxml.html login = '' password = '' search_text = 'Python' s = requests.Session() r = s.post( 'http://login.rutracker.org/forum/login.php', data={'login_username': login, 'login_password': password, 'login': ''} ) assert u'Вы зашли как:' in r.text r = s.get('http://rutracker.org/forum/tracker.php', params={'max': 1, 'nm': search_text}) doc = lxml.html.fromstring(r.content) for el in doc.cssselect('table#tor-tbl td.row4 div a'): print el.get('href'), el.text_content()
Офлайн
Перевел на граб:
def main(): g = grab.Grab() g.setup(post = {'login_username': login, 'login_password': password, 'login': ''}) g.go('http://login.rutracker.org/forum/login.php') sUrl = 'http://rutracker.org/forum/tracker.php?max=1&nm=123' t = g.go(sUrl) g.request() # write it to output file out = open(outf, 'wb') out.write(t.body) out.close()
Офлайн
reclosedev, js в поисковой выдаче! Выполните поиск по раздачам по ссылке из моего кода и получите код странице с выдачей. Вот там и есть javascript
Офлайн
Ну значит JS в браузере отключен. Код страницы гляньте, список торрентов там все равно есть. И в моем коде (через cssselect) этот список отображается.
Отредактировано reclosedev (Сен. 30, 2012 12:49:32)
Офлайн
n2bПожалуйста, не делайте больше так! Не надо следовать дебильному примеру из документации.g.setup(post = {'login_username': login, 'login_password': password, 'login': ''}) g.go('http://login.rutracker.org/forum/login.php')
g.go('http://login.rutracker.org/forum/login.php', post = { 'login_username': login, 'login_password': password, 'login': '' })
reclosedevЧто я и имел в виду.
Код страницы гляньте, список торрентов там все равно есть. И в моем коде (через cssselect) этот список отображается.
Офлайн