scrapy中的蜘蛛传递参数的方法

  介绍

scrapy中的蜘蛛传递参数的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>第一种方法,在命令行用爬行控制蜘蛛爬取的时候,加上——选项,例如:

 scrapy爬myspider——类别=电子

然后在蜘蛛里这样写:

进口scrapy      类MySpider (scrapy.Spider):   name=& # 39; myspider& # 39;      def __init__(自我、类别=None, * args, * * kwargs):   超级(MySpider,自我)。__init__ (* args, * * kwargs)   自我。start_urls=[& # 39; http://www.example.com/categories/%s& # 39;%的类别)   #…

也就是在蜘蛛的构造函数里加上带入的参数即可。

在用scrapyd控制蜘蛛的时候,可以向时间表。json发送- d选项加入参数,同样的,也需要在蜘蛛的构造函数里如上写法。例如:

 $ curl http://localhost: 6800/时间表。json - d项目=myproject - d蜘蛛=somespider=DOWNLOAD_DELAY=2 - d - d设置__arg1=val1 

另外,如果需要在scrapy发出的请求上加入参数,可以使用请求的元参数,然后就可以相应的在返回的respose对象中获得传入的参数。这在某些情况下相当有用,比如说需要确定这个url是哪个用户请求爬取的,可以先用上面两种方法之一将信息传递给蜘蛛,蜘蛛就可以把这个信息加入到请求中,然后在相应的反应中就可以将这个信息与从url的页面中获得的信息一起存入数据库。例如:

 def parse_page1(自我,反应):
  项=MyItem ()
  项目(& # 39;main_url& # 39;]=response.url
  请求=scrapy.Request (“http://www.example.com/some_page.html"
  回调=self.parse_page2)
  request.meta[& # 39;项目# 39;]=项目
  返回请求
  
  def parse_page2(自我,反应):
  项=response.meta[& # 39;项目# 39;】
  项目(& # 39;other_url& # 39;]=response.url
  返回项目

看完上述内容,你们掌握scrapy中的蜘蛛传递参数的方法的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

scrapy中的蜘蛛传递参数的方法