트위터 데이터를 크롤링하기 위한 Scrapy 프레임워크 구현
인터넷이 발전하면서 소셜 미디어는 사람들이 널리 사용하는 플랫폼 중 하나가 되었습니다. 세계 최대의 소셜 네트워크 중 하나인 트위터는 매일 엄청난 양의 정보를 생성합니다. 따라서 트위터에서 데이터를 효과적으로 획득하고 분석하기 위해 기존의 기술적 수단을 어떻게 활용하는가가 특히 중요해졌습니다.
Scrapy는 특정 웹사이트의 데이터를 크롤링하고 추출하도록 설계된 Python 오픈 소스 프레임워크입니다. 다른 유사한 프레임워크와 비교할 때 Scrapy는 확장성과 적응성이 더 높으며 Twitter와 같은 대규모 소셜 네트워크 플랫폼을 잘 지원할 수 있습니다. 이 기사에서는 Scrapy 프레임워크를 사용하여 Twitter 데이터를 크롤링하는 방법을 소개합니다.
크롤링 작업을 시작하기 전에 Python 환경과 Scrapy 프레임워크를 구성해야 합니다. Ubuntu 시스템을 예로 들면 다음 명령을 사용하여 필수 구성요소를 설치할 수 있습니다.
sudo apt-get update && sudo apt-get install python-pip python-dev libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev sudo pip install scrapy
Scrapy 프레임워크를 사용하여 Twitter 데이터를 크롤링하는 첫 번째 단계는 Scrapy 프로젝트를 생성하는 것입니다. 터미널에 다음 명령을 입력하세요.
scrapy startproject twittercrawler
이 명령은 현재 디렉터리에 "twittercrawler"라는 프로젝트 폴더를 생성합니다. 이 폴더에는 자동으로 생성된 일부 파일과 폴더가 포함되어 있습니다.
Scrapy 프로젝트를 열면 "settings.py"라는 파일을 볼 수 있습니다. 이 파일에는 크롤러 지연 시간, 데이터베이스 설정, 요청 헤더 등과 같은 다양한 크롤러 구성 옵션이 포함되어 있습니다. 여기에는 다음 구성 정보를 추가해야 합니다.
ROBOTSTXT_OBEY = False USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' DOWNLOAD_DELAY = 5 CONCURRENT_REQUESTS = 1
이 구성 옵션의 기능은 다음과 같습니다.
Scrapy 프레임워크에서 각 크롤러는 "Spider"라는 클래스를 통해 구현됩니다. 이 수업에서는 웹 페이지를 크롤링 및 구문 분석하고 이를 로컬 또는 데이터베이스에 저장하는 방법을 정의할 수 있습니다. Twitter에서 데이터를 크롤링하려면 "twitter_spider.py"라는 파일을 만들고 그 안에 TwitterSpider 클래스를 정의해야 합니다. 다음은 TwitterSpider의 코드입니다.
import scrapy from scrapy.http import Request class TwitterSpider(scrapy.Spider): name = 'twitter' allowed_domains = ['twitter.com'] start_urls = ['https://twitter.com/search?q=python'] def __init__(self): self.headers = { 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.5', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest' } def parse(self, response): for tweet in response.xpath('//li[@data-item-type="tweet"]'): item = {} item['id'] = tweet.xpath('.//@data-item-id').extract_first() item['username'] = tweet.xpath('.//@data-screen-name').extract_first() item['text'] = tweet.xpath('.//p[@class="TweetTextSize js-tweet-text tweet-text"]//text()').extract_first() item['time'] = tweet.xpath('.//span//@data-time').extract_first() yield item next_page = response.xpath('//a[@class="js-next-page"]/@href').extract_first() if next_page: url = response.urljoin(next_page) yield Request(url, headers=self.headers, callback=self.parse)
TwitterSpider 클래스에서는 크롤링할 웹사이트의 도메인 이름과 시작 URL을 지정합니다. 초기화 기능에서는 안티 크롤러에 의해 제한되지 않도록 요청 헤더를 설정했습니다. 구문 분석 기능에서는 XPath 표현식을 사용하여 획득한 웹 페이지를 하나씩 구문 분석하고 이를 Python 사전에 저장합니다. 마지막으로 Scrapy 프레임워크가 이를 로컬 또는 데이터베이스에 저장할 수 있도록 항복 문을 사용하여 사전을 반환합니다. 또한 간단한 재귀 함수를 사용하여 Twitter 검색 결과의 "다음 페이지"를 처리하므로 더 많은 데이터를 쉽게 얻을 수 있습니다.
TwitterSpider 클래스 작성을 마친 후 터미널로 돌아가서 방금 생성한 "twittercrawler" 폴더를 입력하고 다음 명령을 실행하여 크롤러를 시작해야 합니다.
scrapy crawl twitter -o twitter.json
이 명령 "twitter"에 대한 크롤러라는 크롤러를 시작하고 결과를 "twitter.json"이라는 파일에 저장합니다.
지금까지 Scrapy 프레임워크를 사용하여 트위터 데이터를 크롤링하는 방법을 소개했습니다. 물론 이것은 시작일 뿐입니다. TwitterSpider 클래스를 계속 확장하여 더 많은 정보를 얻거나 다른 데이터 분석 도구를 사용하여 얻은 데이터를 처리할 수 있습니다. Scrapy 프레임워크의 사용법을 학습함으로써 데이터를 보다 효율적으로 처리하고 후속 데이터 분석 작업에 대해 보다 강력한 지원을 제공할 수 있습니다.
위 내용은 Twitter 데이터를 크롤링하기 위한 Scrapy 프레임워크 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!