Форум сайта python.su
26
Использовал пример из документации. В группе было предложено модифицировать передаваемый grab объект, у меня выдает ошибку “SpiderMisuseError: Options url and grab could not be used together” Как правильно задать proxy?
#coding: utf-8 import logging from grab import Grab from grab.spider import Spider, Task class ExampleSpider(Spider): initial_urls = ['http://habrahabr.ru/'] def task_initial(self, grab, task): #print 'Habrahabr home page' for elem in grab.doc.select('//h1[@class="title"]/a[@class="post_title"]'): grab = Grab() grab.setup(proxy='219.93.183.106:8080', proxy_type='http') yield Task('habrapost', url=elem.attr('href'), grab=grab) def task_habrapost(self, grab, task): #print 'Habrahabr topic: %s' % task.url print grab.doc.select('//h1').text().encode('utf-8') if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG) bot = ExampleSpider(thread_number=2) bot.run()
Офлайн
26
Посмотрел исходный код, если немного модифицировать, то все рабоает. Т.е. если Url передавать не task, а в grab объект и только его передавать. Это правильный подход?
grab.config['url'] = elem.attr('href') yield Task('habrapost', grab=grab)
Офлайн
-2
ajib6eptДа очень костыльно.
Посмотрел исходный код, если немного модифицировать, то все рабоает. Т.е. если Url передавать не task, а в grab объект и только его передавать. Это правильный подход?
Офлайн
-2
g.load_proxylist('proxy_list.txt', source_type='text_file', proxy_type='http', auto_change=True )
Офлайн
49
Версии python и grab какие?
Офлайн
26
for elem in grab.doc.select('//h1[@class="title"]/a[@class="post_title"]'): grab = Grab(url=elem.attr('href')) grab.setup(proxy='219.93.183.106:8080', proxy_type='http') yield Task('habrapost', grab=grab)
Версии python и grab какие?
Офлайн