2017-12-05 4 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') 

처음 두 입력 :

[]를

번째 두 입력 반환 :

선택기의 XPath = I는 다음과 같은 방법을 시도 "descendant-or-self :: div [@class 및 contains (concat (' ', normalize-spac \ n \ t \ 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 기능은 성가신 공백을 제거합니다.