>백엔드 개발 >파이썬 튜토리얼 >Scrapy 크롤러를 사용하여 딥러닝 분야의 종이 데이터 캡처

Scrapy 크롤러를 사용하여 딥러닝 분야의 종이 데이터 캡처

WBOY
WBOY원래의
2023-06-23 09:33:221873검색

딥러닝은 현재 인공지능 분야에서 가장 인기 있고 최첨단 연구 방향 중 하나입니다. 관련 연구에 종사하는 학자와 실무자에게 데이터 세트 확보는 심층적인 연구를 수행하기 위한 중요한 전제 조건입니다. 그러나 대부분의 수준 높은 딥러닝 연구 논문은 NeurIPS, ICLR, ICML 등 유수의 국제학술대회를 통해 발표되고 있어 이러한 논문을 구하기가 어렵습니다. 따라서 이 글에서는 딥러닝 분야에서 Scrapy 크롤러 기술을 활용하여 종이 데이터를 크롤링하는 방법을 소개하겠습니다.

먼저 크롤링할 대상 웹사이트를 결정해야 합니다. 현재 딥러닝 논문을 관리하는 가장 인기 있는 웹사이트로는 arXiv와 OpenReview가 있습니다. 이 기사에서는 arXiv 데이터를 크롤링하도록 선택합니다. arXiv는 딥러닝 분야의 논문을 비롯해 다양한 분야의 논문을 비롯한 과학 논문을 관리하는 웹사이트입니다. 동시에 arXiv 웹사이트는 편리한 API 인터페이스도 제공하므로 크롤러 프로그램이 종이 데이터를 쉽게 얻을 수 있습니다.

다음으로 Scrapy 크롤러 프로그램 작성을 시작할 수 있습니다. 먼저 터미널에 다음 명령을 입력하여 Scrapy 프로젝트를 만듭니다.

scrapy startproject deep_learning_papers

생성 후 프로젝트 디렉터리를 입력하고 Spider를 만듭니다.

cd deep_learning_papers
scrapy genspider arXiv_spider arxiv.org

여기서 Spider 이름을 "arXiv_spider"로 지정하고 크롤링 웹 사이트를 arxiv로 지정합니다. . 생성 후 arXiv_spider.py 파일을 열면 다음 코드를 볼 수 있습니다:

import scrapy


class ArxivSpiderSpider(scrapy.Spider):
    name = 'arXiv_spider'
    allowed_domains = ['arxiv.org']
    start_urls = ['http://arxiv.org/']

    def parse(self, response):
        pass

이것은 가장 간단한 Spider 템플릿입니다. 종이 정보를 캡처하는 함수로 구문 분석 메서드를 작성해야 합니다. API 인터페이스를 통해 논문 정보를 얻으므로 GET 요청을 보내야 합니다. Python의 요청 모듈을 사용하여 요청을 보낼 수 있습니다. 여기서는 요청을 보내는 함수를 작성합니다.

import requests

def get_papers_data(start, max_results):
    url = 'http://export.arxiv.org/api/query?search_query=all:deep+learning&start=' + str(start) + '&max_results=' + str(max_results)
    headers = {'Content-Type': 'application/json'}
    response = requests.get(url, headers=headers)
    return response.content

get_papers_data 함수는 두 개의 매개변수, 즉 시작 위치와 최대 개수를 받습니다. 딥러닝 분야의 모든 논문 정보를 얻을 수 있도록 search_query 파라미터에 "all:deep+learning"을 전달합니다. 요청을 사용하여 GET 요청을 보낸 후 response.content에서 데이터를 가져올 수 있습니다.

parse 메소드에서는 반환된 데이터를 구문 분석합니다. XPath 표현식을 사용하여 콘텐츠를 빠르게 얻을 수 있습니다. 구체적인 코드는 다음과 같습니다.

  def parse(self, response):
        for i in range(0, 50000, 100):
            papers = get_papers_data(i, 100)
            xml = etree.XML(papers)

            for element in xml.iter():
                if element.tag == 'title':
                    title = element.text
                elif element.tag == 'name':
                    name = element.text
                elif element.tag == 'abstract':
                    abstract = element.text

                yield {'title': title, 'name': name, 'abstract': abstract}

여기서는 모든 딥러닝 논문의 정보를 얻을 때까지 0부터 시작하여 매번 100씩 증가하여 최대 50,000번의 루프 연산을 사용합니다. 그런 다음 etree.XML을 사용하여 얻은 데이터를 XML 형식으로 구문 분석한 다음 각 요소를 하나씩 읽습니다. 요소의 태그가 'title', 'name', 'abstract'인 경우 요소 내용을 해당 변수에 할당하고 마지막으로 Yield를 사용하여 구문 분석 결과를 반환합니다.

마지막으로 크롤러 프로그램을 시작해야 합니다.

scrapy crawl arXiv_spider -o deep_learning_papers.csv

여기서 "-o" 매개변수는 출력 파일을 지정하는 데 사용되며 기본값은 JSON 형식입니다. 여기서는 CSV 형식을 선택하고 출력 파일 이름은 "deep_learning_papers.csv"입니다.

스크래피 크롤러 기술을 통해 딥러닝 분야의 종이정보를 쉽게 얻을 수 있습니다. 다른 데이터 처리 기술을 결합함으로써 이러한 데이터에 대한 보다 심층적인 연구와 분석을 수행할 수 있으며 이를 통해 딥러닝 분야의 발전을 촉진할 수 있습니다.

위 내용은 Scrapy 크롤러를 사용하여 딥러닝 분야의 종이 데이터 캡처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.