Scrapy 프레임워크 실습: Jianshu 웹사이트 데이터 크롤링
Scrapy는 World Wide Web에서 데이터를 추출하는 데 사용할 수 있는 오픈 소스 Python 크롤러 프레임워크입니다. 이 기사에서는 Scrapy 프레임워크를 소개하고 이를 사용하여 Jianshu 웹사이트에서 데이터를 크롤링합니다.
Scrapy는 pip 또는 conda와 같은 패키지 관리자를 사용하여 설치할 수 있습니다. 여기서는 pip를 사용하여 Scrapy를 설치합니다. 명령줄에 다음 명령을 입력합니다.
pip install scrapy
설치가 완료되면 다음 명령을 사용하여 Scrapy가 성공적으로 설치되었는지 확인할 수 있습니다.
scrapy version
"Scrapy x.x.x - no active project"와 유사한 출력이 표시되면 ", Scrapy가 성공적으로 설치되었습니다.
Scrapy 사용을 시작하기 전에 Scrapy 프로젝트를 만들어야 합니다. 명령줄에 다음 명령을 입력하세요:
scrapy startproject jianshu
그러면 현재 디렉터리에 "jianshu"라는 Scrapy 프로젝트가 생성됩니다.
Scrapy에서 크롤러는 웹사이트에서 추출된 데이터를 처리하는 구성 요소입니다. 우리는 Scrapy Shell을 사용하여 Jianshu 웹사이트를 분석하고 크롤러를 생성합니다.
명령줄에 다음 명령을 입력하세요.
scrapy shell "https://www.jianshu.com"
이렇게 하면 Scrapy Shell이 시작됩니다. 여기서 크롤러용 선택기를 만들기 위해 Jianshu 웹 사이트의 페이지 소스 코드와 요소를 볼 수 있습니다.
예를 들어 다음 선택기를 사용하여 기사 제목을 추출할 수 있습니다.
response.css('h1.title::text').extract_first()
다음 선택기를 사용하여 기사 작성자를 추출할 수 있습니다.
response.css('a.name::text').extract_first()
Scrapy Shell에서 선택기를 테스트한 후 크롤러용 선택기를 만들 수 있습니다. 새로운 Python 파일. 명령줄에 다음 명령을 입력하세요:
scrapy genspider jianshu_spider jianshu.com
이렇게 하면 "jianshu_spider"라는 이름의 Scrapy 스파이더가 생성됩니다. Scrapy Shell에서 테스트한 선택기를 크롤러의 .py 파일에 추가하고 추출할 데이터를 지정할 수 있습니다.
예를 들어 다음 코드는 Jianshu 웹사이트 홈페이지에 있는 모든 기사의 제목과 작성자를 추출합니다.
import scrapy class JianshuSpider(scrapy.Spider): name = 'jianshu_spider' allowed_domains = ['jianshu.com'] start_urls = ['https://www.jianshu.com/'] def parse(self, response): for article in response.css('li[data-note-id]'): yield { 'title': article.css('a.title::text').extract_first(), 'author': article.css('a.name::text').extract_first(), }
이제 명령줄 모드에서 Scrapy 크롤러를 실행합니다. 결과를 파일의 JSON으로 출력합니다. 명령줄에 다음 명령을 입력합니다.
scrapy crawl jianshu_spider -o articles.json
이 명령은 크롤러를 실행하고 출력 데이터를 "articles.json"이라는 JSON 파일에 저장합니다.
이 기사에서는 Scrapy 프레임워크를 소개하고 이를 사용하여 Jianshu 웹 사이트에서 데이터를 스크랩했습니다. Scrapy 프레임워크를 사용하면 웹사이트에서 데이터를 쉽게 추출할 수 있으며 동시성 및 확장성 덕분에 Scrapy를 대규모 데이터 추출 애플리케이션으로 확장할 수 있습니다.
위 내용은 Scrapy 프레임워크 실습: Jianshu 웹사이트 데이터 크롤링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!