Scrapy - 关注RSS链接

kal*_*l3v 7 python web-crawler scrapy

我想知道是否有人试图使用SgmlLinkExtractor/CrawlSpider提取/关注RSS项链接.我不能让它工作......

我使用以下规则:


   rules = (
       Rule(SgmlLinkExtractor(tags=('link',), attrs=False),
           follow=True,
           callback='parse_article'),
       )

(请记住,rss链接位于链接标记中).

我不知道如何告诉SgmlLinkExtractor提取链接的text()而不是搜索属性...

欢迎任何帮助,提前致谢

Pab*_*man 7

CrawlSpider规则不起作用.您可能需要子类化BaseSpider并在您的蜘蛛回调中实现自己的链接提取.例如:

from scrapy.spider import BaseSpider
from scrapy.http import Request
from scrapy.selector import XmlXPathSelector

class MySpider(BaseSpider):
    name = 'myspider'

    def parse(self, response):
        xxs = XmlXPathSelector(response)
        links = xxs.select("//link/text()").extract()
        return [Request(x, callback=self.parse_link) for x in links]
Run Code Online (Sandbox Code Playgroud)

你也可以在shell中尝试XPath,例如运行:

scrapy shell http://blog.scrapy.org/rss.xml
Run Code Online (Sandbox Code Playgroud)

然后键入shell:

>>> xxs.select("//link/text()").extract()
[u'http://blog.scrapy.org',
 u'http://blog.scrapy.org/new-bugfix-release-0101',
 u'http://blog.scrapy.org/new-scrapy-blog-and-scrapy-010-release']
Run Code Online (Sandbox Code Playgroud)


opy*_*ate 6

现在有一个XMLFeedSpider人可以使用.