2017-10-28 12 views
1

I am scraping manulife긁어 웹 페이지에 포함 된 앵커 태그 <a href = "#"> using scrapy

내가 다음 페이지로 이동하려면, 나는 검사 할 때 "다음"나는 얻을 :

<span class="pagerlink"> 
    <a href="#" id="next" title="Go to the next page">Next</a> 
</span> 

무엇을 할 수있는 올바른 접근이 따라?

# -*- coding: utf-8 -*- 
import scrapy 
import json 
from scrapy_splash import SplashRequest 

class Manulife(scrapy.Spider): 
name = 'manulife' 
#allowed_domains = ['https://manulife.taleo.net/careersection/external_global/jobsearch.ftl?lang=en'] 
start_urls = ['https://manulife.taleo.net/careersection/external_global/jobsearch.ftl?lang=en&location=1038'] 

def start_requests(self): 
    for url in self.start_urls: 
     yield SplashRequest(
     url, 
     self.parse, 
     args={'wait': 5}, 
     ) 




def parse(self, response): 
    #yield { 
    # 'demo' : response.css('div.absolute > span > a::text').extract() 
    #  } 
    urls = response.css('div.absolute > span > a::attr(href)').extract() 
    for url in urls: 
     url = "https://manulife.taleo.net" + url 
     yield SplashRequest(url = url, callback = self.parse_details, args={'wait': 5}) 
     #self.log("reaced22 : "+ url) 

    #hitting next button 
    #data = json.loads(response.text) 
    #self.log("reached 22 : "+ data) 
    #next_page_url = 

    if next_page_url: 
     next_page_url = response.urljoin(next_page_url) 
     yield SplashRequest(url = next_page_url, callback = self.parse, args={'wait': 5}) 


def parse_details(self,response): 
    yield { 
      'Job post' : response.css('div.contentlinepanel > span.titlepage::text').extract(), 
      'Location' : response.xpath("//span[@id = 'requisitionDescriptionInterface.ID1679.row1']/text()").extract(), 
      'Organization' : response.xpath("//span[@id = 'requisitionDescriptionInterface.ID1787.row1']/text()").extract(), 
      'Date posted' : response.xpath("//span[@id = 'requisitionDescriptionInterface.reqPostingDate.row1']/text()").extract(), 
      'Industry': response.xpath("//span[@id = 'requisitionDescriptionInterface.ID1951.row1']/text()").extract() 
      } 

보시다시피, 코드에는 다음 페이지 링크를 누르는 동안 SplashRequest가 포함되어 있습니다.

나는 긁어 모으기에 초보자이며 어딘가에서 웹 사이트가 json으로 응답을 반환 할 수도 있음을 알았습니다. 나는 그것을 시도했다. 그러나 나에게 "json 객체가 디코딩 될 수 없다"는 오류를 준다.

+0

나는 스플래쉬 스플래시를 사용해 보았지만 아무런 결과가 없습니다. –

+1

치료는 javascript를 해석 할 수 없으며 그런 것들을 위해 셀레늄을 사용합니다. – shotgunner

+0

자바 스크립트 요청을 처리하는 데 사용되는 scrapy-splash를 사용했습니다. @shotgunner –

답변

0

나는 CSS 선택기 ".pagerlink a[title='Go to the next page']"이 이것을 사용할 수 있다고 생각한다.

그러나 ".pagerlink:last-child a"이 최선의 방법입니다. href 속성을 가져와야합니다.

+0

이것은 "#"을 포함하는 앵커 태그를 제공한다. 따라서 유용하지 않습니다. : / –