Python CrawlSpider - PullRequest
       31

Python CrawlSpider

2 голосов
/ 11 июля 2011

Я изучал, как использовать scrapy, хотя у меня был минимальный опыт работы с python. Я начал изучать, как скрести с помощью BaseSpider. Сейчас я пытаюсь сканировать сайты, но столкнулся с проблемой, которая действительно смутила меня. Вот пример кода с официального сайта http://doc.scrapy.org/topics/spiders.html.

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

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(SgmlLinkExtractor(allow=('category\.php', ), deny=('subsection\.php',     ))),

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

    def parse_item(self, response):
        print "WHY WONT YOU WORK!!!!!!!!"
        self.log('Hi, this is an item page! %s' % response.url)

        hxs = HtmlXPathSelector(response)
        item = TestItem()
        item['id'] = hxs.select('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
        item['name'] = hxs.select('//td[@id="item_name"]/text()').extract()
        item['description'] =     hxs.select('//td[@id="item_description"]/text()').extract()
        return item

Единственное изменение, которое я сделал, это утверждение:

print "WHY WONT YOU WORK!!!!!!!!"

Но так как я не вижу этого оператора печати во время выполнения, я боюсь, что эта функция не достигается. Этот код я взял прямо с официального сайта Scrapy. Что я делаю неправильно или недоразумение?

Ответы [ 2 ]

1 голос
/ 20 июля 2011
start_urls = ['http://www.example.com']

example.com не имеет ссылок на категории или элементы.Это всего лишь пример того, каким может быть URL удаленного сайта.

Это нерабочий пример в документации.

0 голосов
/ 11 июля 2011

Вы можете попробовать сделать паука, который, как вы знаете, работает, и посмотреть, делают ли операторы печати то, что у вас есть. Я думаю, что помню, как пытался сделать то же самое давным-давно, и что они не будут отображаться, даже если код выполняется.

...