我正试图收集一个域下所有的网址使用Scrapy。我试着用爬行蜘蛛从主页开始爬网。对于每个页面,我想使用Xpath提取所有href。并以类似键值对的格式存储数据。
Key:当前Url 值:此页上的所有链接。
class MySpider(CrawlSpider):
name = 'abc.com'
allowed_domains = ['abc.com']
start_urls = ['http://www.abc.com']
rules = (Rule(SgmlLinkExtractor()), )
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
item = AbcItem()
item['key'] = response.url
item['value'] = hxs.select('//a/@href').extract()
return item
我的AbcItem()定义如下:
从废料项导入项,字段
class AbcItem(Item):
# key: url
# value: list of links existing in the key url
key = Field()
value = Field()
pass
当我这样运行代码时:
nohup scrapy crawl abc.com -o output -t csv &
机器人似乎开始爬行,我可以看到nohup.out文件被所有配置日志填充,但是没有来自输出文件的信息。。我想收集的是哪个,有人能帮我吗?我的机器人怎么了?
您应该为规则定义回调。下面是从
twitter.com
主页(follow=False
)获取所有链接的示例:然后,在输出文件中,我看到:
希望能有所帮助。
如果不显式设置回调函数,scrapy将使用方法
parse
来处理已爬网的页面。因此,应该添加parse_项作为回调,或者更改要解析的名称。相关问题 更多 >
编程相关推荐