Scrapy SgmlLinkExtractor игнорирует позволенные ссылки

Смотрите на этот пример паука в документации Scrapy. Объяснение:

Этот паук запустил бы домашнюю страницу example.com сканирования, собрав ссылки категории и ссылки на элемент, анализируя последнего с parse_item методом. Для каждого ответа объекта некоторые данные будут извлечены из HTML с помощью XPath, и Объект будет заполнен им.

Я скопировал того же паука точно и заменил "example.com" другим начальным URL.

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from stb.items import StbItem

class StbSpider(CrawlSpider):
    domain_name = "stb"
    start_urls = ['http://www.stblaw.com/bios/MAlpuche.htm']

    rules = (Rule(SgmlLinkExtractor(allow=(r'/bios/.\w+\.htm', )), callback='parse', follow=True), )

    def parse(self, response):
        hxs = HtmlXPathSelector(response)

        item = StbItem()
        item['JD'] = hxs.select('//td[@class="bodycopysmall"]').re('\d\d\d\d\sJ.D.')
        return item

SPIDER = StbSpider()

Но мой паук "stb" не собирает ссылки из "/BIOS /" поскольку это, как предполагается, делает. Это выполняет начальный URL, очищает item['JD'] и записи это на файле и затем выходят.

Почему это - это SgmlLinkExtractor проигнорирован? Rule читается, потому что это ловит синтаксические ошибки в Rule строка.

Действительно ли это - ошибка? есть ли в моем коде что-то не так? Нет никаких ошибок кроме набора необработанных ошибок, которые я вижу с каждым выполнением.

Было бы хорошо знать то, что я делаю неправильно здесь. Спасибо за любые подсказки. Я неправильно понимаю что SgmlLinkExtractor как предполагается, делает?

10
задан Zeynel 28 November 2009 в 00:34
поделиться

1 ответ

Поскольку T не является значением - это всего лишь подсказка для компилятора. JVM не имеет понятия о T . Дженерики можно использовать только в качестве типа для проверки типа во время компиляции.

-121--3959399-

Используйте ключевое слово 'is'.

если (животное Птица) ...

-121--4746559-

Функция синтаксического анализа фактически реализована и используется в классе CrawlSpider, и вы непреднамеренно переопределяете ее. Если изменить имя на что-то другое, например разобрать _ пункт , то Правило должно работать.

11
ответ дан 4 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: