我正在编写scrapy代码来抓取第一页和另一个给定网页的深度
不知怎的,我的抓取工具没有输入额外的深度。只需抓取给定的起始网址并结束其操作。
我添加了filter_links回调函数,但即使没有被调用,所以显然规则会被忽略。什么是可能的原因,我可以改变什么使其遵循规则
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from crawlWeb.items import CrawlwebItem
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
class DmozSpider(CrawlSpider):
name = "premraj"
start_urls = [
"http://www.broadcom.com",
"http://www.qualcomm.com"
]
rules = [Rule(SgmlLinkExtractor(), callback='parse',process_links="process_links",follow=True)]
def parse(self, response):
#print dir(response)
#print dir(response)
item=CrawlwebItem()
item["html"]=response.body
item["url"]=response.url
yield item
def process_links(self,links):
print links
print "hey!!!!!!!!!!!!!!!!!!!!!"
答案 0 :(得分:0)
CrawlSpider documentation中有一个警告框。它说:
编写爬网蜘蛛规则时,请避免使用parse作为回调 CrawlSpider使用parse方法本身来实现其逻辑。 因此,如果您覆盖解析方法,则爬行蜘蛛将不再存在 工作
您的代码可能无法按预期工作,因为您使用parse
作为回调。