>백엔드 개발 >파이썬 튜토리얼 >Scrapy 크롤러는 Qianku.com의 아름다운 사진 데이터 수집 및 인기 공유 순위를 실현합니다.

Scrapy 크롤러는 Qianku.com의 아름다운 사진 데이터 수집 및 인기 공유 순위를 실현합니다.

王林
王林원래의
2023-06-22 13:41:451184검색

Scrapy 크롤러는 Qianku.com의 아름다운 사진 데이터 획득 및 인기 공유 순위를 실현합니다

인터넷이 대중화되면서 이미지에 대한 사람들의 수요가 점차 증가하고 아름다운 사진 웹사이트도 등장했습니다. Qianku.com은 고화질 사진과 자료 리소스를 전문적으로 제공하는 플랫폼입니다. 사용자가 무료로 다운로드할 수 있고 상업 미술 리소스를 대체할 수도 있는 정교한 사진 자료가 많이 있습니다. 그러나 이러한 아름다운 이미지를 수동으로 다운로드하는 것은 시간이 많이 걸리고 비효율적입니다. 따라서 이 기사에서는 Scrapy 크롤러를 사용하여 아름다운 사진 데이터를 얻고 Qianku.com에서 인기 주식 순위를 매기는 방법을 소개합니다.

1. Scrapy 설치

Scrapy를 설치하기 전에 Python 환경을 미리 설치해야 합니다. Python 환경에서는 pip install scrapy 명령을 통해 Scrapy를 설치할 수 있습니다.

2. Scrapy 프로젝트 만들기

명령줄 터미널을 열고 프로젝트를 만들 디렉터리를 입력한 다음 scrapy startproject qkspider 명령을 입력하여 디렉터리에 "qkspider"라는 이름의 Scrapy 프로젝트를 만듭니다.

3. 크롤러 만들기

프로젝트 디렉터리에 들어가서 scrapy genspider qk qkpic.com 명령을 입력하여 spiders 폴더 아래에 "qk"라는 크롤러를 만듭니다.

4. 코드 작성

1. settings.py 파일을 수정합니다.

먼저 qkspider 디렉터리에 있는 settings.py 파일을 열고 다음 코드를 추가합니다.

ITEM_PIPELINES = {'qkspider.pipelines.QkspiderPipeline':100,}

획득한 아름다운 사진 데이터를 저장합니다. 데이터베이스에 있습니다.

2.pipelines.py 파일을 수정하세요

다음으로, qkspider 디렉터리에 있는pipelines.py 파일을 열고 그 안에 다음 코드를 추가해야 합니다:

import pymongo

class QkspiderPipeline(object):
    def __init__(self):
        client = pymongo.MongoClient("mongodb://localhost:27017/")
        db = client['qkdb']
        self.collection = db['qkpic']

    def process_item(self, item, spider):
        self.collection.insert(dict(item))
        return item

이것은 얻은 아름다운 이미지 데이터를 MongoDB에 저장하는 것입니다.

3. items.py 파일 수정

qkspider 디렉터리에 있는 items.py 파일을 열고 다음 코드를 추가하세요:

import scrapy

class QkspiderItem(scrapy.Item):
    title = scrapy.Field()
    img_url = scrapy.Field()
    share_num = scrapy.Field()

얻을 데이터 유형을 정의합니다.

4. qk.py 파일 수정

spiders 폴더 아래의 qk.py 파일을 열고 다음 코드를 추가하세요.

import scrapy
from qkspider.items import QkspiderItem

class QkSpider(scrapy.Spider):
    name = "qk"
    allowed_domains = ["qkpic.com"]
    start_urls = ["http://www.qkpic.com/"]

    def parse(self, response):
        items = []
        pic_lists = response.xpath('//div[@class="index_mianpic"]/ul/li')
        for i, pic in enumerate(pic_lists):
            item = QkspiderItem()
            item['title'] = pic.xpath('./a/@title').extract_first()
            item['img_url'] = pic.xpath('./a/img/@src').extract_first()
            item['share_num'] = int(pic.xpath('./span/em/text()').extract_first())
            items.append(item)
        return items

Qianku의 아름다운 이미지 데이터를 크롤링하는 규칙의 종류를 정의합니다. 웹 사이트 및 추가 데이터는 MongoDB에 저장됩니다. 이 코드에는 아름다운 사진 제목, URL 주소, 공유량 등 획득할 아름다운 사진 정보를 지정합니다.

5. 크롤러 실행

이제 명령줄 터미널에서 방금 작성한 크롤러 프로그램을 실행할 수 있습니다. qkspider 디렉토리에 scrapy creep qk 명령을 입력하여 qk.py 파일의 프로그램을 실행하고 Qianku 웹사이트의 아름다운 이미지 데이터를 크롤링하고 MongoDB에 저장하기 시작합니다.

6. 인기 공유 순위 달성

Qianku 웹사이트의 인기 공유 순위를 얻으려면 인기 목록 페이지의 URL을 가져와서 qk.py 파일에 다음 코드를 추가해야 합니다.

class QkSpider(scrapy.Spider):
    name = "qk"
    allowed_domains = ["qkpic.com"]
    start_urls = ["http://www.qkpic.com/", "http://www.qkpic.com/top/"]

    def parse(self, response):
        if response.url.startswith('http://www.qkpic.com/top/'):
            items = self.parse_rank_list(response)
        else:
            items = self.parse_pic_info(response)
        return items

    # 爬取热门榜单信息
    def parse_rank_list(self, response):
        items = []
        pic_lists = response.xpath('//div[@class="topcont"]/ul/li')
        for i, pic in enumerate(pic_lists):
            item = QkspiderItem()
            item['title'] = pic.xpath('./a/@title').extract_first()
            item['img_url'] = pic.xpath('./a/img/@src').extract_first()
            item['share_num'] = int(pic.xpath('./div[1]/i[2]/text()').extract_first())
            items.append(item)
        return items

여기서 코드를 작성하면 웹사이트 홈페이지와 인기 목록 페이지에 start_urls를 할당하고 새로운 함수인parse_rank_list를 추가합니다.

7. 요약

이 글에서는 Scrapy 크롤러 프레임워크를 사용하여 Qianku 웹사이트의 아름다운 이미지 데이터를 크롤링하는 방법을 소개합니다. 크롤러 프로세스 중에 우리는 획득하는 데 필요한 데이터 유형을 정의하고 MongoDB를 사용하여 획득한 데이터를 저장합니다. 또한 이 기사에서는 크롤러 프로그램의 기능을 확장하기 위해 Qianku 웹사이트의 인기 공유 순위 목록을 얻는 방법도 소개합니다.

위 내용은 Scrapy 크롤러는 Qianku.com의 아름다운 사진 데이터 수집 및 인기 공유 순위를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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