스크래피 스파이더가 빈파일을 출력하는 이유를 모르겠어요!
조회수 114 답변수 1 반응수 2 등록일 2019.02.27 21:16:16

책('파이썬을 이용한 웹크롤링과 스크레이핑' )에 첨부된 ch6-1의 myspider.py 입니다.

  1. import scrapy class BlogSpider(scrapy.Spider):     # spider의 이름     name = 'blogspider'     # 크롤링을 시작할 URL 리스트     start_urls = ['https://blog.scrapinghub.com']         def parse(self, response):         for url in response.css('ul li a::attr("href")').re('.*/category/.*'):             yield scrapy.Request(response.urljoin(url), self.parse_titles)         def parse_titles(self, response):         for post_title in response.css('div.entries > ul > li a::text').extract():             yield {'title': post_title}


안녕하세요.


크롤링하는 URL인 "https://blog.scrapinghub.com" 의 HTML이 예제코드와 다릅니다.

예제 코드가 작성되고 난 이후에 해당 사이트의 HTML이 수정된 것으로 추측되어 지네요.


아래와 같이 예제코드를 변경하고 scrapy를 실행하면 스크래핑이 되네요.

  1. import scrapy
  2.  
  3.  
  4. class BlogSpider(scrapy.Spider):
  5. # spider의 이름
  6. name = 'blogspider'
  7.  
  8. # 크롤링을 시작할 URL 리스트
  9. start_urls = ['https://blog.scrapinghub.com']
  10.  
  11. def parse(self, response):
  12. for url in response.css('ul li a::attr("href")').re('.*/tag/.*'):
  13. yield scrapy.Request(response.urljoin(url), self.parse_titles)
  14.  
  15. def parse_titles(self, response):
  16. for post_title in response.css('div.post-header > h2 > a::text').extract():
  17. yield {'title': post_title}


이 답변으로 문제를 해결하셨다면 채택 부탁드릴게요!


2019.02.28 23:29:46 반응 이력
감사합니다! 한 참 만에 해결했습니다! tmzpdpdlwl 2019.03.04 21:41:22

답변 작성

질문에 적합한 답변을 상세히 작성해 주시기 바랍니다.

답변이 찬성되면 태그평판 +2점이 적립, 반대되면 태그평판 -1점 차감됩니다.

답변이 채택되면 태그평판 +10점이 적립됩니다.