Scrapy不会抓取整个网站

时间:2019-06-03 10:47:52

标签: scrapy

我正在尝试使用auth系统抓取整个网站。没有我的身份验证功能,所有功能都可以正常使用。当我使用身份验证功能时,抓取登录信息并仅抓取主页。为什么不抓取“规则”部分中定义的所有链接?

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy.http import Request, FormRequest


class TSpider(CrawlSpider):
    name = 't'
    allowed_domains = ['domain.net']
    start_urls = ['http:// domain.net/']
    login_page = 'http:// domain.net/login.php'

    rules = (
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def start_requests(self):
        yield Request(url=self.login_page, callback=self.login, dont_filter=True)


    def login(self, response):
        return FormRequest.from_response(response,
                                         formdata={'login_username': 'login',
                                                'login_password': 'password'},
                                         callback=self.parse_item)

    def parse_item(self, response):
        item = {}
        item['title'] = response.xpath('//head/title/text()').extract()
        item['url'] = response.url
        return item

2 个答案:

答案 0 :(得分:0)

我有一个线索。我只是在登录功能中摆脱了回调,一切正常。但是有人向我解释吗?

    def login(self, response):
    return FormRequest.from_response(response,
                                     formdata={'login_username': 'login',
                                            'login_password': 'password'},
                                     )

答案 1 :(得分:0)

规则仅适用于默认回调parse()处理的响应。

self.parse_item替换为self.parse,或省略参数,因为parse()是默认回调。