>  기사  >  백엔드 개발  >  Scrapy 사례 분석: LinkedIn에서 회사 정보를 크롤링하는 방법

Scrapy 사례 분석: LinkedIn에서 회사 정보를 크롤링하는 방법

王林
王林원래의
2023-06-23 10:04:401696검색

Scrapy는 인터넷에서 관련 정보를 빠르고 쉽게 얻을 수 있는 Python 기반 크롤러 프레임워크입니다. 이 기사에서는 Scrapy 사례를 사용하여 LinkedIn에서 회사 정보를 크롤링하는 방법을 자세히 분석합니다.

  1. 타겟 URL 정하기

우선 우리의 타겟이 링크드인의 회사 정보라는 점을 분명히 해야 합니다. 따라서 LinkedIn 회사 정보 페이지의 URL을 찾아야 합니다. LinkedIn 웹사이트를 열고 검색창에 회사 이름을 입력한 후 드롭다운 상자에서 "회사" 옵션을 선택하여 회사 소개 페이지로 들어갑니다. 이 페이지에서는 회사의 기본정보, 직원수, 소속회사 및 기타 정보를 확인할 수 있습니다. 이 시점에서 이후 사용을 위해 브라우저의 개발자 도구에서 페이지의 URL을 가져와야 합니다. 이 URL의 구조는 다음과 같습니다.

https://www.linkedin.com/search/results/companies/?keywords=xxx

그 중keywords=xxx는 우리가 검색한 키워드를 나타내며, xxx는 다음과 같이 대체될 수 있습니다. 어떤 회사 이름.

  1. Create Scrapy 프로젝트

다음으로 Scrapy 프로젝트를 생성해야 합니다. 명령줄에 다음 명령을 입력하세요.

scrapy startproject linkedin

이 명령은 현재 디렉터리에 linkedin이라는 Scrapy 프로젝트를 생성합니다.

  1. 크롤러 생성

프로젝트를 생성한 후 프로젝트 루트 디렉터리에 다음 명령을 입력하여 새 크롤러를 생성합니다.

scrapy genspider company_spider www.linkedin.com

이렇게 하면 company_spider라는 크롤러가 생성되고, Linkedin 회사 페이지에 배치하세요.

  1. Scrapy 구성

Spider에서는 크롤링할 URL, 페이지의 데이터를 구문 분석하는 방법 등 몇 가지 기본 정보를 구성해야 합니다. 방금 생성한 company_spider.py 파일에 다음 코드를 추가합니다.

import scrapy

class CompanySpider(scrapy.Spider):
    name = "company"
    allowed_domains = ["linkedin.com"]
    start_urls = [
        "https://www.linkedin.com/search/results/companies/?keywords=apple"
    ]

    def parse(self, response):
        pass

위 코드에서는 크롤링할 사이트 URL과 파싱 기능을 정의합니다. 위 코드에서는 크롤링할 사이트 URL과 파싱 기능만 정의했을 뿐 크롤러의 구체적인 구현은 추가하지 않았습니다. 이제 LinkedIn 회사 정보를 캡처하고 처리하는 구문 분석 함수를 작성해야 합니다.

  1. 파싱 함수 작성

파싱 함수에서는 LinkedIn 회사 정보를 캡처하고 처리하는 코드를 작성해야 합니다. XPath 또는 CSS 선택기를 사용하여 HTML 코드를 구문 분석할 수 있습니다. LinkedIn 회사 정보 페이지의 기본 정보는 다음 XPath를 사용하여 추출할 수 있습니다.

//*[@class="org-top-card-module__name ember-view"]/text()

이 XPath는 "org-top-card-module__name ember-view" 클래스가 있는 요소를 선택하고 해당 텍스트 값을 반환합니다.

다음은 전체 company_spider.py 파일입니다.

import scrapy

class CompanySpider(scrapy.Spider):
    name = "company"
    allowed_domains = ["linkedin.com"]
    start_urls = [
        "https://www.linkedin.com/search/results/companies/?keywords=apple"
    ]

    def parse(self, response):
        # 获取公司名称
        company_name = response.xpath('//*[@class="org-top-card-module__name ember-view"]/text()')
        
        # 获取公司简介
        company_summary = response.css('.org-top-card-summary__description::text').extract_first().strip()
        
        # 获取公司分类标签
        company_tags = response.css('.org-top-card-category-list__top-card-category::text').extract()
        company_tags = ','.join(company_tags)

        # 获取公司员工信息
        employees_section = response.xpath('//*[@class="org-company-employees-snackbar__details-info"]')
        employees_current = employees_section.xpath('.//li[1]/span/text()').extract_first()
        employees_past = employees_section.xpath('.//li[2]/span/text()').extract_first()

        # 数据处理
        company_name = company_name.extract_first()
        company_summary = company_summary if company_summary else "N/A"
        company_tags = company_tags if company_tags else "N/A"
        employees_current = employees_current if employees_current else "N/A"
        employees_past = employees_past if employees_past else "N/A"

        # 输出抓取结果
        print('Company Name: ', company_name)
        print('Company Summary: ', company_summary)
        print('Company Tags: ', company_tags)
        print('
Employee Information
Current: ', employees_current)
        print('Past: ', employees_past)

위 코드에서는 XPath 및 CSS 선택기를 사용하여 페이지의 기본 정보, 회사 프로필, 태그 및 직원 정보를 추출하고 이에 대한 몇 가지 기본 작업을 수행합니다. 데이터 처리 및 출력.

  1. Run Scrapy

이제 LinkedIn 회사 정보 페이지 크롤링 및 처리가 완료되었습니다. 다음으로 크롤러를 실행하려면 Scrapy를 실행해야 합니다. 명령줄에 다음 명령을 입력하세요.

scrapy creep company

이 명령을 실행하면 Scrapy는 LinkedIn 회사 정보 페이지의 데이터를 크롤링 및 처리하고 크롤링 결과를 출력합니다.

요약

위는 Scrapy를 사용하여 LinkedIn 회사 정보를 크롤링하는 방법입니다. Scrapy 프레임워크의 도움으로 대규모 데이터 스크래핑을 쉽게 수행하는 동시에 데이터를 처리 및 변환하여 시간과 에너지를 절약하고 데이터 수집 효율성을 향상시킬 수 있습니다.

위 내용은 Scrapy 사례 분석: LinkedIn에서 회사 정보를 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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