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()而不是搜索属性...
欢迎任何帮助,提前致谢
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)