>

스크래피가 처음입니다. 작업중 인 프로젝트에 대한 Indeed의 작업 사이트를 긁어 내려고합니다. Google Chrome inspect를 사용하여 긁는 방법에 대한 구문을 천천히 배우고 control-f를 누르십시오. 이 튜토리얼을 따라 갔다 :

https://www.digitalocean.com/community/tutorials/how-to-crawl-a-web-page-with-scrapy-and-python-3

기본적으로 페이지 당 16 개의 업체 정보를 얻으려고 노력하고 있습니다. 일반적으로 "

//span[@class="company"]/a/text()

이 시점까지의 코드는 다음과 같습니다.

import scrapy
class IndeedSpider(scrapy.Spider):
    name='indeed_jobs'
    start_urls = ['https://www.indeed.com/jobs?q=software%20engineer&l=Portland%2C%20OR']
    def parse(self, response):
        SET_SELECTOR = '.jobsearch-SerpJobCard'
        for jobListing in response.css(SET_SELECTOR):
            pass

아무것도 반환하지 않습니다. 16 행이 필요하므로 SET_SELECTOR가 올바르지 않습니다. 정말 감사하겠습니다!


  • 답변 # 1

    선택기가 올바르게 작동합니다. 와이즈 비즈  그러나 Scrapy 관련 변수는 아닙니다. 무엇이든 호출하거나 선택기 문자열을 함수 호출에 직접 넣을 수도 있습니다. 아무것도 반환되지 않는 이유도 아닙니다.

    아무것도 반환하도록 지시하지 않았기 때문에 아무것도 반환하지 않습니다. 현재 코드에서 각 작업 섹션을 찾을 수 있습니다 ( SET_SELECTOR 에서)  루프),하지만 당신은 아무것도하지 말라고 ( for ).

    다음은 각 직업마다 회사를 얻는 예입니다 :

    pass
    
    

    import scrapy class IndeedSpider(scrapy.Spider): name='indeed_jobs' start_urls = ['https://www.indeed.com/jobs?q=software%20engineer&l=Portland%2C%20OR'] def parse(self, response): SET_SELECTOR = '.jobsearch-SerpJobCard' for jobListing in response.css(SET_SELECTOR): # Yield is necessary to return scraped data. yield { # And here you get a value from each job. 'company': jobListing.xpath('.//span[@class="company"]/a/text()').get('').strip() } 사용 참고  XPath의 시작 부분에 그 이유는 문서에 있습니다. 그리고 나는 또한 기본 .// 를 추가했습니다  와이즈 비즈  해당 필드가 누락 된 경우 (문서) ''  오류가 발생하지 않습니다.

    그러나 누락 된 부분이 https://docs.scrapy.org/en/latest/intro/tutorial.html

    에 설명되어 있으므로 먼저 Scrapy 공식 자습서를 통해 작업하는 것이 좋습니다. get()

관련 자료

  • 이전 python - Kivy 텍스트 편집기 입력이 표시되지 않음
  • 다음 ssl - 크기가 1024 비트 인 키 RSA에서 Java 알고리즘 제한 조건 검사에 실패했습니다