我是否在使用LinkExtractor属性(restrict\uXPath)时出错?不打电话

2024-10-03 04:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在测试在网站上设置一个spider的规则,以便输入每个项目的url,从每个项目获取信息,然后按照分页,在这种情况下是无限滚动。 但首先我想创建一个规则,让回调函数在每次找到一个项时都被调用,但问题是,它不会被回调函数调用。你知道吗

我也尝试过allow()和一个简单的最小表达式,但仍然一无所获。我得到任何东西的唯一时间是如果我将allow()和restric\u xpaths()都留空。你知道吗

# -*- coding: utf-8 -*-
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor 
from scrapy.exceptions import CloseSpider


class Bahiaprop1Spider(CrawlSpider):
    name = 'bahiaprop1'
    allowed_domains = ['www.bahiablancapropiedades.com']
    start_urls = ['https://www.bahiablancapropiedades.com/buscar#/terrenos/venta/bahia- 
blanca/todos-los-barrios/rango-min=50.000,rango-max=350.000']

rules = (
    Rule(LinkExtractor(allow = (), restrict_xpaths = ('//div[@class="row"]')),
                        callback = 'parse_item', follow = True),
)


def parse_item(self, response):
    print ('lol')

我希望“lol”会被打印出来。你知道吗


Tags: 项目fromimportcom规则wwwruleclass
1条回答
网友
1楼 · 发布于 2024-10-03 04:31:44

这里的主要问题是,您正在使用的选择器(//div[@class="row"])只匹配div与单个类row。 使用XPath表达式来匹配包含类的元素有点棘手:

//div[@class and contains(concat(' ', normalize-space(@class), ' '), ' row ')]

或者可以使用css选择器:

Rule(
    LinkExtractor(allow=(), restrict_css = 'div.row'),
    callback = 'parse_item', 
)

编辑:

一些链接:

相关问题 更多 >