나는 스 커리 (scrapy) 라이브러리를 사용하여 웹 사이트에서 여러 페이지를 긁어 모으는 지침서를 사용하고있었습니다. 이 자습서에서는 yield 문을 사용하여 CSS 선택기 및 xpath 선택기를 사용하여 페이지의 HTML 및 CSS 구조에서 정보를 가져옵니다. if 문을 사용하여 검색 쿼리가 결과를 찾았는지 확인하고 else 문을 사용하여 검색 쿼리가 결과를 얻지 못할 때 수행 할 작업을 출력하기로 결정했습니다. 문제는 코드가 회사 이름을 추출하는 else 문을 실행하고 Location 및 Sales 필드에 'Not Found'를 전달하는 사용자 정의 출력 문자열을 원할 때 발생합니다. 나는 다음과 같은 오류가 스크립트를 실행하면검색 python을 사용하여 검색 쿼리를 찾을 수 없을 때 Yield 문을 사용하여 출력 반환
는 :
File "C:\Users\....\hoover-scraper\scraper.py", line 28
'Location': 'Not Found'
^
을 나는이 내가 구문 에러 메시지가 무엇입니까 왜 yield 문을 사용하는 올바른 방법이 아니다라고 생각합니다. 따라서 검색어가 빈 검색을 만날 때 영업 및 위치 입력란에 '찾을 수 없음'문자열을 출력 할 수있는 방법이 있는지 궁금합니다.
내 코드의이 부분 :
def parse(self, response):
NAME_SELECTOR ="td a::text"
LOCATION_SELECTOR ='.//tr/td/text()' #using xpath to grab information for Location and Sales
SALES_SELECTOR = './/tr/td/text()'
if response.css(NAME_SELECTOR).extract_first(): #Checks to see if the company name field has data if not prints 'No results found'
yield {
'Company Name': response.css(NAME_SELECTOR).extract_first(),
'Location' : response.xpath(LOCATION_SELECTOR)[0].extract(), #Location comes first inside the td tags thus the [0]
'Sales' : response.xpath(SALES_SELECTOR)[1].extract(),
}
else:
yield {
'Company Name': response.css("dd.value.term::text").extract_first() #identifies company name which data was not found
'Location': 'Not Found'
'Sales': 'Not Found'
}
항목 : https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do – MrT