Scrapy Yahoo Group Spider - PullRequest
       9

Scrapy Yahoo Group Spider

0 голосов
/ 23 марта 2011

Пытаюсь поцарапать Y!Группа и я могу получить данные с одной страницы, но это все.У меня есть некоторые основные правила, но они явно не правы.Кто-нибудь уже решил это?

class YgroupSpider(CrawlSpider):
name = "yahoo.com"
allowed_domains = ["launch.groups.yahoo.com"]
start_urls = [
    "http://launch.groups.yahoo.com/group/random_public_ygroup/post"
]

rules = (
    Rule(SgmlLinkExtractor(allow=('message','messages' ), deny=('mygroups', ))),
    Rule(SgmlLinkExtractor(), callback='parse_item'),
)


def parse_item(self, response):
    hxs = HtmlXPathSelector(response)
    sites = hxs.select('/html')
    item = Item()
    for site in sites:
        item = YgroupItem()
        item['title'] = site.select('//title').extract()
        item['pubDate'] = site.select('//abbr[@class="updated"]/text()').extract()
        item['desc'] = site.select("//div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')]/text()").extract()
    return item

1 Ответ

0 голосов
/ 27 марта 2011

Похоже, вы почти не представляете, что делаете. Я довольно новичок в Scrapy, но я думаю, вы захотите что-то вроде Rule(SgmlLinkExtractor(allow=('http\://example\.com/message/.*\.aspx', )), callback='parse_item'), Попробуйте написать регулярное выражение, совпадающее с полным URL-адресом ссылки, который вы хотите. Кроме того, похоже, вам нужно только одно правило. Добавьте обратный вызов к первому. Экстрактор ссылок сопоставляет каждую ссылку, сопоставленную с регулярным выражением в allow, и исключает ссылки, сопоставленные с deny, и оттуда каждая из оставшихся страниц будет загружена и передана в parse_item.

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

...