Size: a a a

2018 August 06

DD

Danil Denysenko in Scrapy
да
источник

DD

Danil Denysenko in Scrapy
с сессией
источник

B

Bulatbulat48 in Scrapy
ну и отлично :)
источник

DD

Danil Denysenko in Scrapy
Bulatbulat48
ну и отлично :)
сейчас со скрапи буду пытаться)
источник

B

Bulatbulat48 in Scrapy
ID:507308625
Если в скрапи использовать https://doc.scrapy.org/en/latest/topics/spiders.html#crawlspider-example crawlspider,
то не могу понять, как добавить https://doc.scrapy.org/en/latest/topics/spiders.html?highlight=arguments#spider-arguments аргументы,
чтобы считать то что ведет юзер и если он ввел один, то использовать тот рулс, что в иф, а если два, то тот что в елз.
class MySpider(CrawlSpider):
   name = 'example.com'
   allowed_domains = ['example.com']
   start_urls = ['http://www.example.com']

   rules = (
       # Extract links matching 'category.php' (but not matching 'subsection.php')
       # and follow links from them (since no callback means follow=True by default).
       Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),

       # Extract links matching 'item.php' and parse them with the spider's method parse_item
       Rule(LinkExtractor(allow=('item\.php', )), callback='parse_item'),
   )

вот как это условие в класс добавить и как правильно прописать аргументы - не пойму.
в доке есть пирмеры для спайдера, там все понятно, а вот как это написать для CrawlSpider не знаю и не нагуглил нигде такого.
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class MySpider(CrawlSpider):
   custom_settings = None

   def __init__(self, *a, **kw):
       self.rules = (
           Rule(LinkExtractor(allow=('en/latest/',), deny=(kw['rule1'],))),
           Rule(LinkExtractor(allow=('en/latest/topics/',)), callback='parse_item'),
       )
       super(CrawlSpider, self).__init__(*a, **kw)
       self._compile_rules()

   name = 'example'
   allowed_domains = ['doc.scrapy.org']
   start_urls = ['https://doc.scrapy.org']

   def parse_item(self, response):
       self.logger.info('Response %s', response.url)
источник

NK

ID:507308625 in Scrapy
Bulatbulat48
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class MySpider(CrawlSpider):
   custom_settings = None

   def __init__(self, *a, **kw):
       self.rules = (
           Rule(LinkExtractor(allow=('en/latest/',), deny=(kw['rule1'],))),
           Rule(LinkExtractor(allow=('en/latest/topics/',)), callback='parse_item'),
       )
       super(CrawlSpider, self).__init__(*a, **kw)
       self._compile_rules()

   name = 'example'
   allowed_domains = ['doc.scrapy.org']
   start_urls = ['https://doc.scrapy.org']

   def parse_item(self, response):
       self.logger.info('Response %s', response.url)
спасибо
источник

B

Bulatbulat48 in Scrapy
вызывать как:  scrapy crawl example -a rule1=topics
источник

B

Bulatbulat48 in Scrapy
ID:507308625
спасибо
welcome )
источник

B

Bulatbulat48 in Scrapy
пришлось покапаться в CrawlSpider
источник

B

Bulatbulat48 in Scrapy
@Verz1Lka а вы часто юзаете Crawlspider?
источник

E

Evgen in Scrapy
нет
источник

B

Bulatbulat48 in Scrapy
на сколько не часто?) если не секрет
источник

E

Evgen in Scrapy
не могу сказать, я же не в курсе вообще всех проектов
источник

B

Bulatbulat48 in Scrapy
я вообще почти не юзаю, не особо удобно. Если только динамически что-то нужно
источник

B

Bulatbulat48 in Scrapy
Bulatbulat48
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class MySpider(CrawlSpider):
   custom_settings = None

   def __init__(self, *a, **kw):
       self.rules = (
           Rule(LinkExtractor(allow=('en/latest/',), deny=(kw['rule1'],))),
           Rule(LinkExtractor(allow=('en/latest/topics/',)), callback='parse_item'),
       )
       super(CrawlSpider, self).__init__(*a, **kw)
       self._compile_rules()

   name = 'example'
   allowed_domains = ['doc.scrapy.org']
   start_urls = ['https://doc.scrapy.org']

   def parse_item(self, response):
       self.logger.info('Response %s', response.url)
@ebadanin посмотри плиз правильно наследние заюзал, или как-то все проще можно?
источник

B

Bulatbulat48 in Scrapy
CrawlSpider вообще получается почти тоже самое, что и Spider только self._compile_rules() юзает
источник

DD

Danil Denysenko in Scrapy
а как правильно юзать скрапи с пост запросами? я пишу yield scrapy.Request(url, callback, methon='POST', body=И тут указываю тело запроса, как я понимаю". Но я делаю через обычные реквесты, а потом через скрапи(и в нем в принтую response.body) и результат вообще не то
источник

NK

ID:507308625 in Scrapy
источник

E

Evgen in Scrapy
лучше использовать FormRequest
источник

NK

ID:507308625 in Scrapy
а в пандасе кто-то разбирается? не могу понять, как сделать одну вещь.
источник