Смысл в том, что код, выполняемый внутри onclick="" должен возвращать значение. Если это true - то происходит обработка ссылки т.е. банальный переход по ней, если false - то никто никуда не переходит :) Обычно всё же возвращается false, а ссылка служит просто удобным элементом для запуска каких-то процессов.
Ваша проблема была в том, что вы щёлкали по первой ссылке - открывалось новое окно, но затем в старом происходил переход по ссылке т.е. документ как бы перезагружался, естественно там все объекты создавались заново и информация об объекте dop терялась (хотя новое окно по прежнему продолжало существование).
Чем вам не нравится? Пользуйтесь. А то что оно медленно работает - это бред. Без полной картины оптимизировать смысла нет. Может у вас там потом выборка к бд в сто раз дольше делается - тут хоть заоптимизируйся со strpos - толку ноль будет :)
while True:
if max_page and page > max_page:
break
# Build query url
print 'Parsing page #%d' % page
query_safe = quote_plus(query.encode('utf-8'))
url = 'http://wordstat.yandex.ru/?cmd=words&page=%d&text=%s&geo=&text_geo=' % (page, query_safe)
g.setup(url=url)
g.request()
# If captcha image exists refresh fuid01 cookie
while 'http://captcha.yandex.net' in g.response_body:
print 'Captcha detected'
# Refresh fuid01 cookie
g = Grab()
g.setup(url='http://kiks.yandex.ru/su/', log_file='log.html')
g.request()
print g.cookies
# Query yandex again
g.setup(url=url)
g.request()
# Parse results table
for tr in g.etree.xpath('//table[@class="campaign"]//tr[@class="tlist"]'):
items = [x.strip().encode('utf-8') for x in tr.xpath('td//text()')]
results.write('%s\t%s\n' % (items[1], items[3]))
#time.sleep(1)
# Check the link on next page
if 'cmd=words&page=%d' % (page + 1) in g.response_body:
page += 1
else:
break
Потому что читаем первое сообщение "Все нюансы через личку...". Меня заинтересовало предложение топикстартера и я хотел узнать подробности. Я действительно не понимаю, зачем мне нужно выполнять ваше тестовое задание, вы ведь не предлагаете мне работу :)
verdegal добавил 15.08.2010 в 02:21
А по поводу проверки кодера. Можно заставить его пройти online тесты по нужной технологии. Например, на brainbench.com - правда, упс, они там все платные. Хотя можно сделать финт ушами, заставить его зарегаться на odesk.com и пройти там тесты - там куча тестов и все бесплатные :)
Смысл в том, что код, выполняемый внутри onclick="" должен возвращать значение. Если это true - то происходит обработка ссылки т.е. банальный переход по ней, если false - то никто никуда не переходит :) Обычно всё же возвращается false, а ссылка служит просто удобным элементом для запуска каких-то процессов.
Ваша проблема была в том, что вы щёлкали по первой ссылке - открывалось новое окно, но затем в старом происходил переход по ссылке т.е. документ как бы перезагружался, естественно там все объекты создавались заново и информация об объекте dop терялась (хотя новое окно по прежнему продолжало существование).
Могу сделать. С джанго на ты. Дебиан тоже со мной дружит.
Контакты:
email: verdegal@ya.ru
jabber: verdegal@ya.ru
icq: 613186259
skype: verde.gal
Так он вроде и не спрашивает, наоборот, сам утверждает :D
Ну preg_match ещё можно заюзать. А вообще, да, тут и strpos неплохо смотрится.
Чем вам не нравится? Пользуйтесь. А то что оно медленно работает - это бред. Без полной картины оптимизировать смысла нет. Может у вас там потом выборка к бд в сто раз дольше делается - тут хоть заоптимизируйся со strpos - толку ноль будет :)
А, точно, привык на питоне уже строчки складывать :))
Найдите два отличия от вашего кода ;-)
Кстати, "javascript:" писать не обязательно.
Почему-то моё сообщение не отображается, то ли модерация, то ли ещё что, попробую ещё раз.
Вот пример моей работы - парсер wordstat.yandex.ru
> Ну а почему бы и нет. Вы же ищите работу
Потому что читаем первое сообщение "Все нюансы через личку...". Меня заинтересовало предложение топикстартера и я хотел узнать подробности. Я действительно не понимаю, зачем мне нужно выполнять ваше тестовое задание, вы ведь не предлагаете мне работу :)
verdegal добавил 15.08.2010 в 02:21
А по поводу проверки кодера. Можно заставить его пройти online тесты по нужной технологии. Например, на brainbench.com - правда, упс, они там все платные. Хотя можно сделать финт ушами, заставить его зарегаться на odesk.com и пройти там тесты - там куча тестов и все бесплатные :)