2017-12-05 9 views
0

は、私はまだscrapyを勉強して、このページからいくつかの情報をこすりしようとしています:Schlotzskys store壊れたHTMLを持つresponse response.css/xpath。任意のヒント?

しかし、私は、サイト上のアドレスを解析して具体的にいくつかの問題に遭遇しscrapyのシェルを介してscrapyでページを解析した後。

まず私は、シェルで次のコマンドを実行します。

pipenv run scrapy shell https://www.schlotzskys.com/find-your-schlotzskys/arkansas/fayetteville/2146/ 

すべてはこれで十分判明。それから私はアドレスを掻き集めることを試みる。リターン上記

response.css('div.col-xs-12 col-sm-6 col-md-6') 
response.css('div.container locations-mid-container') 
response.xpath('//div[@class="locations-info"]') 
response.css('div.locations-address') 

最初の二つの入力: 私は、次の方法を試みた

[]

を第二の2つの入力が返さ:

セレクタXPathを= "descendant-or-self :: div [@classおよびcontains(concat( ' '、normalize-spac \\ \ t \ t \ t \ t131 N. McPherson Church Rd。\ t \ t \ t \ t '

またはその変形です。

は、今私はからHTMLを見て:

print(response.text) 

私が現れずに興味がありますHTMLが、ちょうどscrapyで解析していないようです。それはHTMLが壊れている可能性があります、私はこれを回避する方法があるのだろうか?

非常に助けていただきありがとうございます。

答えて

0

最初の式で指定されたCSSセレクタによってページに要素が見つかりませんでした。すべての式にextract()またはextract_first()メソッド呼び出しがないため、Selectorで作業しています。

これを試してみてください:

address = [ 
    response.xpath('normalize-space(//div[@class="locations-address"])').extract_first(), 
    response.xpath('normalize-space(//div[@class="locations-address-secondary"])').extract_first(), 
    response.xpath('normalize-space(//div[@class="locations-state-city-zip"])').extract_first() 
] 

normalize-space() XPath関数は迷惑な空白を削除します。

関連する問題