내가, 파이썬 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 개 이상의 제품에 대해 각각의 조합에서 배송비를 계산해야합니다. 도움을 받으십시오. 고맙습니다.
생각 나는 셀레늄을 포함해야하지만 구현 방법에 대해서는 확신 할 수 없다.
감사합니다. –
보이는 방법처럼 보이지만 어떻게 시작해야합니까? –
저는 Windows에 있지만 스플래시는 도커가 필요하고 docs는 http://splash.readthedocs.io/en/latest/install.html이 필요 없습니다. Windows 명령어 –