Python scrapy,중국어 웹 소설 차 트 오 르 기

프로젝트 요구 사항
차 트 소설의 저자,제목,분류 및 완결 또는 연재
프로젝트 분석
목표 url:"https://www.qidian.com/rank/hotsales?style=1&page=1"
在这里插入图片描述
콘 솔 검색 을 통 해 해당 정 보 는 html 정적 웹 페이지 에 존재 하기 때문에 이번 파충류 의 난이 도 는 비교적 낮다.
在这里插入图片描述
콘 솔 을 통 해 관찰 한 결과 필요 한 내용 은 모두 li 목록 에 있 고 모든 목록 은 책의 내용 을 대표 하 는 것 으로 나 타 났 다.
在这里插入图片描述
li 에서 필요 한 내용 찾기
在这里插入图片描述
두 번 째 페이지 의 url 을 찾 습 니 다.
“https://www.qidian.com/rank/hotsales?style=1&page=1”
“https://www.qidian.com/rank/hotsales?style=1&page=2”
비교 찾기 페이지 수 변화
scrapy 프로그램 을 시작 합 니 다.
프로그램 작성
프로젝트 를 만 드 는 것 은 너무 간단 해서 말 하지 않 겠 습 니 다.
1.item 작성(데이터 저장)

import scrapy

class QidianHotItem(scrapy.Item):
    name = scrapy.Field() #  
    author = scrapy.Field() #  
    type = scrapy.Field() #  
    form= scrapy.Field() #    
2.spider(데이터 캡 처(핵심 코드)작성)

#coding:utf-8

from scrapy import Request
from scrapy.spiders import Spider
from ..items import QidianHotItem
#       

class HotSalesSpider(Spider):#  spider  
    name = "hot" #     
    qidian_header={"user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"} #  header
    current_page = 1 #     
    def start_requests(self): #       
        url="https://www.qidian.com/rank/hotsales?style=1&page=1"
        yield Request(url,headers=self.qidian_header,callback=self.hot_parse)
		#Request      
		#url:  url
		#header:    (     )
		#callback:        (    parse)
    def hot_parse(self, response):#    
        #xpath  
        list_selector=response.xpath("//div[@class='book-mid-info']")
        #      
        for one_selector in list_selector:
            #      
            name=one_selector.xpath("h4/a/text()").extract()[0]
            #    
            author=one_selector.xpath("p[1]/a[1]/text()").extract()[0]
            #    
            type=one_selector.xpath("p[1]/a[2]/text()").extract()[0]
            #     
            form=one_selector.xpath("p[1]/span/text()").extract()[0]

            item = QidianHotItem()
            #     ,      
            item['name'] = name
            item['author'] = author
            item['type'] = type
            item['form'] = form

            yield item #    

            #      URL,     request  
            self.current_page += 1
            if self.current_page <= 10:#   10 
                next_url = "https://www.qidian.com/rank/hotsales?style=1&page="+str(self.current_page)
                yield Request(url=next_url,headers=self.qidian_header,callback=self.hot_parse)


    def css_parse(self,response):
        #css  
        list_selector = response.css("[class='book-mid-info']")
        for one_selector in list_selector:
            #       
            name = one_selector.css("h4>a::text").extract()[0]
            #     
            author = one_selector.css(".author a::text").extract()[0]
            #     
            type = one_selector.css(".author a::text").extract()[1]
            #     
            form = one_selector.css(".author span::text").extract()[0]
            #     

            item=QidianHotItem()
            item['name']=name
            item['author'] = author
            item['type'] = type
            item['form'] = form
            yield  item
3.start.py(명령 행 대신)
파충류 프로젝트 폴 더 에 start.py 를 만 듭 니 다.
在这里插入图片描述

from scrapy import cmdline
#  cmd    
cmdline.execute("scrapy crawl hot -o hot.csv" .split())
#       csv  
비슷 한 과정 이 나타 나 는 것 은 기어 오 르 는 성공 을 대표 한다.
在这里插入图片描述
hot.csv
在这里插入图片描述
총결산
이번 파충류 의 내용 은 매우 간단 합 니 다.spider 와 item 만 사 용 했 기 때 문 입 니 다.이것 은 거의 모든 scrapy 가 호출 해 야 하 는 파일 입 니 다.후기 에는 middlewarse.py,pipelines.py,setting.py 가 작성 하고 설정 해 야 하 며 자바 script 과 json 에서 데 이 터 를 추출 하 는 것 이 어렵 습 니 다.
여기 서 Python scrapy 가 중국어 사이트 소설 차 트 에서 오 르 는 것 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Python 이 중국어 사이트 에서 오 르 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기