2017-12-18 33 views
0

내가, 파이썬 Scrapy에 새로 온 사람이 지금까지 가지고이름없는 암호 필드 만있는 로그인 양식으로 특정 웹 페이지를 치료 한 다음 값을 ajax에 제출하려면 어떻게합니까? 셀렌과?

import scrapy 

class ExampleSpider(scrapy.Spider): 
    name = 'example' 
    allowed_domains = ['flashfurniture.com'] 
    start_urls = ['http://flashfurniture.com/'] 

    skus = ['LE-L-C-BLACK-GG', 'SZ-TUFT-SIL-GG'] 
    zips = ['33122', '90210', '07501', '60007'] 
    qtys = [1, 2, 12, 24, 50] 

    def start_requests(self): 
     for sku in self.skus: 
      yield scrapy.Request(url='http://www.flashfurniture.com/'+sku.lower()+'.html', cookies=[{'name': 'password', 'value': 'fubar', 'domain': 'www.flashfurniture.com', 'path': '/'}], callback=self.parse) 

    def parse(self, response): 
     sku = response.css('#fobTable .product-code::text').extract_first() 
     self.log(sku) 
     for zip in self.zips: 
      for qty in self.qtys: 
       return scrapy.FormRequest(url=response.url, formdata={'vwquantity': str(qty), 'shippingAddressDS.shipping_ROW0_zip': zip}, callback=self.after_post) 
       #self.log('LTL FDX') 
       #pass #write to file 

    def after_post(self, response): 
     LTL = response.css('#calcBox .unique-shipment #rateRad0[value]::text').extract_first() 
     FDX = response.css('#calcBox .unique-shipment #rateRad1[value]::text').extract_first() 
     self.log('LTL $%s FDX $%s' % (LTL, FDX)) 
     self.log(response.xpath('//div[@class="show-button"][@style]')) 

위 반환의 SKU (오른쪽으로 이동하는 방법)과

2017-12-18 14:28:51 [example] DEBUG: LTL $None FDX $None 
2017-12-18 14:28:51 [example] DEBUG: [] 
2017-12-18 14:28:51 [example] DEBUG: LTL $None FDX $None 
2017-12-18 14:28:51 [example] DEBUG: [] 

매우 마지막 줄은 될 예정이다 로그인 성공 테스트.

위의 코드에 포함 된 암호가 유효하지 않습니다. 당신이 어쨌든 이것을 알아 내도록 도울 수 있기를 바랍니다.

내가 꽤 명확해야 달성하기 위해 노력하고있어 나는 다음과 같은 포함, SKU/페이지에 5 개 행이 구문 분석 CSV에 쓸 궁극적으로 필요

SKU, Z0Q0L, Z0Q0F, Z1Q0L, Z1Q0F, Z2Q0L, Z2Q0F, Z3Q0L, Z3Q0F Q1, Z0Q1L, Z0Q1F, Z1Q1L, Z1Q1F, Z2Q1L, Z2Q1F, Z3Q1L, Z3Q1F Q2, Z0Q2L, Z0Q2F, Z1Q2L, Z1Q2F, Z2Q2L, Z2Q2F, Z3Q2L, Z3Q2F Q3, Z0Q3L, Z0Q3F, Z1Q3L, Z1Q3F, Z2Q3L, Z2Q3F, Z3Q3L, Z3Q3F Q4, Z0Q4L, Z0Q4F, Z1Q4L, Z1Q4F, Z2Q4L, Z2Q4F, Z3Q4L, Z3Q4F

여기서 Q N = qty [] 값을 나타내는 q0q0l 및 예를 들어 # rateRad0 (LTL)의 첫 번째 우편 번호 (33122) 및 첫 번째 qty (1)에 대해 반환 된 값입니다.

100 개 이상의 제품에 대해 각각의 조합에서 배송비를 계산해야합니다. 도움을 받으십시오. 고맙습니다.

생각 나는 셀레늄을 포함해야하지만 구현 방법에 대해서는 확신 할 수 없다.

답변

0

응답 본문 개체를 HTML 형식으로 저장하는 코드를 작성하십시오. 필요한 객체가 다운로드 된 HTML 파일에있는 경우 XPath/CSS 선택기를 확인하십시오.이 문제를 해결하기 위해 AJAX 호출로 인한 것일 수 없다면 scrapy.Request 대신 SplahRequest을 사용하십시오.

+0

감사합니다. –

+0

보이는 방법처럼 보이지만 어떻게 시작해야합니까? –

+0

저는 Windows에 있지만 스플래시는 도커가 필요하고 docs는 http://splash.readthedocs.io/en/latest/install.html이 필요 없습니다. Windows 명령어 –