Python scrapyは起点の中国語のネットの小説のランキングを登ります


一、プロジェクトの需要
ランキング小説の作者、書名、分類及び連載
二、プロジェクト分析
ターゲットurl:「https://www.qidian.com/rank/hotsales?style=1&page=1
在这里插入图片描述
コンソール検索で静的なページに該当する情報が存在することが分かりましたので、今回は爬虫類の難易度が低いです。
在这里插入图片描述
コンソールで観察して、必要な内容はすべて1つのliリストの中にあり、各リストは1冊の本の内容を表しています。
在这里插入图片描述
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、pipeline s.py、setting.pyは編纂と配置が必要です。また、javascriptとjsonからデータを抽出するのが難しいです。
ここでPython scrapyが起点となる中国語ネット小説ランキングの記事を紹介します。Pythonが起点となる中国語ネットの内容については、以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。