在scrapy python中通过javascript实现下一页的启动?

时间:2014-11-20 07:55:16

标签: javascript python scrapy next scrapinghub

实际上我的意图是从"href="javascript:submitAction_win0(document.win0,'HRS_APPL_WRK_HRS_LST_NEXT')"获得Next,所以仅举一个例子我正在考虑[这个网址] [1]。从这个网址中可以看到页面末尾的“下一步”,所以如果你观察到html,那么它们是通过href="javascript:submitAction_win0(document.win0,'HRS_APPL_WRK_HRS_LST_NEXT')标记的,href标记为#,我就是试图收集那些href标签,即使它们是#



def parse(self,response):
        selector = Selector(response)
        links = []
        for link in selector.css('span.PSEDITBOX_DISPONLY').re('.*>(\d+)<.*'):
		#intjid = selector.css('span.PSEDITBOX_DISPONLY').re('.*>(\d+)<.*')
                abc = 'xxxx'
                #print abc
		yield Request(abc,callback=self.parse_listing_page,dont_filter=True)
                          #meta={"use_splash": False}
                         # ) 

        nav_page = selector.css('div#win0divHRS_APPL_WRK_HRS_LST_NEXT a').extract()
        print nav_page
	for nav_page in nav_page:
       
     ## To pass the url to parse function
                yield Request(urljoin('xxx',nav_page),self.parse,dont_filter=True)
&#13;
&#13;
&#13;

当我运行上面的代码时,我得到的结果为" HTTP status code is not handled or not allowed",我的意思是没有,任何人都可以告诉我如何通过""href="javascript:submitAction_win0(document.win0,'HRS_APPL_WRK_HRS_LST_NEXT')""函数实现Next,以及结果为空的原因。我在html中观察某种奇怪的东西,例如Next中的一个页面的锚标记为"<a id="HRS_APPL_WRK_HRS_LST_NEXT" class="PSHYPERLINK" href="javascript:submitAction_win0(document.win0,'HRS_APPL_WRK_HRS_LST_NEXT');" tabindex="74" ptlinktgt="pt_replace" name="HRS_APPL_WRK_HRS_LST_NEXT"></a>"

提前致谢

输出:

&#13;
&#13;
[u'<a name="HRS_APPL_WRK_HRS_LST_NEXT" id="HRS_APPL_WRK_HRS_LST_NEXT" ptlinktgt="pt_replace" tabindex="74" href="javascript:submitAction_win0(document.win0,\'HRS_APPL_WRK_HRS_LST_NEXT\');" class="PSHYPERLINK">Next</a>']
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:3)

Scrapy不支持java脚本调用。但是有一些机制可以用来面对java脚本。

  1. Splash - Splash是一个带有HTTP API的javascript呈现服务。它是一个带有HTTP API的轻量级浏览器,使用Twisted和QT
  2. 在Python中实现
  3. Scrapyjs - 此库通过两种不同的机制提供Scrapy-Javascript集成:Scrapy下载处理程序,Scrapy下载器middlware
  4. SpiderMonkey - 从Python执行任意JavaScript代码。允许您在JavaScript VM中引用任意Python对象和函数
  5. spynner - Spynner是一个用于Python的有状态程序化Web浏览器模块。它基于PyQT和WebKit。它支持Javascript,AJAX以及WebKit能够处理的所有其他技术(Flash,SVG,...)。 Spynner利用了JQuery。一个功能强大的Javascript库,可以轻松地与页面和事件模拟进行交互