在Scrapy中创建可编辑的crawspider规则

2024-10-04 07:38:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试创建一个简单的Scrapy crawspider脚本,它可以很容易地更改,但是我很难弄清楚如何使链接提取器规则正常工作。在

这是我的代码:

class LernaSpider(CrawlSpider):
"""Our ad-hoc spider"""

name = "lerna"

def __init__(self, url, allow_follow='.*', deny_follow='', allow_extraction='.*', deny_extraction=''):
    parsed_url = urlparse(url)
    domain = str(parsed_url.netloc)
    self.allowed_domains = [domain]
    self.start_urls = [url]
    self.rules = (
        # Extract links
        # and follow links from them (since no callback means follow=True by default).
        Rule(SgmlLinkExtractor(allow=(allow_follow, ), deny=(deny_follow, ))),

        # Extract links and parse them with the spider's method parse_item
        Rule(SgmlLinkExtractor(allow=(allow_extraction, ), deny=(deny_extraction, )), callback='parse_item'),
    )

    super(LernaSpider, self).__init__()

def parse_item(self, response):

    print 'Crawling... %s' % response.url
    # more stuff here

我有这段代码,但我永远不能让允许/拒绝规则正常工作,我真的不明白为什么。留下空字符串会导致它否认一切吗?我想既然这是一个回复,那么只要我输入“.*”或其他什么的话,它只会做一个全面的否认。在

任何帮助都将不胜感激。在


Tags: 代码selfurlparseinit规则deflinks
1条回答
网友
1楼 · 发布于 2024-10-04 07:38:24

你自己在实例化蜘蛛吗?比如:

spider = LernaSpider('http://example.com')

否则,如果从命令行运行$scrapy crawl lerna,则错误地将url用作构造函数中的第一个参数(应该是name),而且也没有将其传递给super。也许可以试试这个:

^{pr2}$

正则表达式看起来很好:空值允许全部,而不允许任何值。在

相关问题 更多 >