欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python scrapy爬取小說(shuō)代碼案例詳解

 更新時(shí)間:2020年07月09日 09:56:03   作者:咔咔kk  
這篇文章主要介紹了Python scrapy爬取小說(shuō)代碼案例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

scrapy是目前python使用的最廣泛的爬蟲(chóng)框架

架構(gòu)圖如下

解釋?zhuān)?/p>

  • Scrapy Engine(引擎): 負(fù)責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號(hào)、數(shù)據(jù)傳遞等。
  • Scheduler(調(diào)度器): 它負(fù)責(zé)接受引擎發(fā)送過(guò)來(lái)的Request請(qǐng)求,并按照一定的方式進(jìn)行整理排列,入隊(duì),當(dāng)引擎需要時(shí),交還給引擎。
  • Downloader(下載器):負(fù)責(zé)下載Scrapy Engine(引擎)發(fā)送的所有Requests請(qǐng)求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來(lái)處理,
  • Spider(爬蟲(chóng)):它負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進(jìn)的URL提交給引擎,再次進(jìn)入Scheduler(調(diào)度器),
  • Item Pipeline(管道):它負(fù)責(zé)處理Spider中獲取到的Item,并進(jìn)行進(jìn)行后期處理(詳細(xì)分析、過(guò)濾、存儲(chǔ)等)的地方.
  • DownloaderMiddlewares(下載中間件):你可以當(dāng)作是一個(gè)可以自定義擴(kuò)展下載功能的組件。Spider Middlewares(Spider中間件):你可以理解為是一個(gè)可以自定擴(kuò)展和操作引擎和Spider中間通信的功能組件(比如進(jìn)入Spider的Responses;和從Spider出去的Requests

一。安裝

pip install Twisted.whl

pip install Scrapy

Twisted的版本要與安裝的python對(duì)應(yīng),https://jingyan.baidu.com/article/1709ad8027be404634c4f0e8.html

二。代碼

本實(shí)例采用xpaths解析頁(yè)面數(shù)據(jù)

按住shift-右鍵-在此處打開(kāi)命令窗口

輸入scrapy startproject qiushibaike 創(chuàng)建項(xiàng)目

輸入scrapy genspiderqiushibaike 創(chuàng)建爬蟲(chóng)

1>結(jié)構(gòu)

2>qiushibaike.py爬蟲(chóng)文件

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders.crawl import Rule, CrawlSpider

class BaiduSpider(CrawlSpider):
  name = 'qiushibaike'
  allowed_domains = ['qiushibaike.com']
  start_urls = ['https://www.qiushibaike.com/text/']#啟始頁(yè)面
#        
  rules= (
    Rule(LinkExtractor(restrict_xpaths=r'//a[@class="contentHerf"]'),callback='parse_item',follow=True),
    Rule(LinkExtractor(restrict_xpaths=r'//ul[@class="pagination"]/li/a'),follow=True)
  )

  def parse_item(self, response):
    title=response.xpath('//h1[@class="article-title"]/text()').extract_first().strip() #標(biāo)題
    time=response.xpath(' //span[@class="stats-time"]/text()').extract_first().strip() #發(fā)布時(shí)間
    content=response.xpath('//div[@class="content"]/text()').extract_first().replace('  ','\n') #內(nèi)容
    score=response.xpath('//i[@class="number"]/text()').extract_first().strip() #好笑數(shù)

    yield({"title":title,"content":content,"time":time,"score":score});

3>pipelines.py 數(shù)據(jù)管道[code]class QiushibaikePipeline:

class QiushibaikePipeline:
  def open_spider(self,spider):#啟動(dòng)爬蟲(chóng)中調(diào)用
    self.f=open("xiaoshuo.txt","w",encoding='utf-8')
  def process_item(self, item, spider):
    info=item.get("title")+"\n"+ item.get("time")+" 好笑數(shù)"+item.get("score")+"\n"+ item.get("content")+'\n'
    self.f.write(info+"\n")
    self.f.flush()
  def close_spider(self,spider):#關(guān)閉爬蟲(chóng)中調(diào)用
    self.f.close()

4>settings.py

開(kāi)啟ZhonghengPipeline

ITEM_PIPELINES = {
  'qiushibaike.pipelines.QiushibaikePipeline': 300,
}

5>0main.py運(yùn)行

from scrapy.cmdline import execute
execute('scrapy crawl qiushibaike'.split())

6>結(jié)果:

生成xiaohua.txt,里面有下載的笑話文字

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中導(dǎo)入 train_test_split提示錯(cuò)誤的解決

    python中導(dǎo)入 train_test_split提示錯(cuò)誤的解決

    這篇文章主要介紹了python中導(dǎo)入 train_test_split提示錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python使用pygame框架實(shí)現(xiàn)推箱子游戲

    python使用pygame框架實(shí)現(xiàn)推箱子游戲

    這篇文章主要為大家詳細(xì)介紹了python使用pygame框架實(shí)現(xiàn)推箱子游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python繪制多個(gè)曲線的折線圖

    python繪制多個(gè)曲線的折線圖

    這篇文章主要為大家詳細(xì)介紹了python繪制多個(gè)曲線的折線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python標(biāo)準(zhǔn)庫(kù)之time模塊的語(yǔ)法與簡(jiǎn)單使用

    python標(biāo)準(zhǔn)庫(kù)之time模塊的語(yǔ)法與簡(jiǎn)單使用

    在平常的代碼中,我們常常需要與時(shí)間打交道,那么在Python中,與時(shí)間處理有關(guān)的模塊就包括:time、datetime以及calendar,這篇文章主要給大家介紹了關(guān)于python標(biāo)準(zhǔn)庫(kù)之time模塊的語(yǔ)法與使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • python 解決print數(shù)組/矩陣無(wú)法完整輸出的問(wèn)題

    python 解決print數(shù)組/矩陣無(wú)法完整輸出的問(wèn)題

    這篇文章主要介紹了關(guān)于python 解決print數(shù)組/矩陣無(wú)法完整輸出的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python如何存儲(chǔ)和讀取ASCII碼形式的byte數(shù)據(jù)

    Python如何存儲(chǔ)和讀取ASCII碼形式的byte數(shù)據(jù)

    這篇文章主要介紹了Python如何存儲(chǔ)和讀取ASCII碼形式的byte數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python中turtle庫(kù)的簡(jiǎn)單使用教程

    python中turtle庫(kù)的簡(jiǎn)單使用教程

    這篇文章主要給大家介紹了關(guān)于python中turtle庫(kù)的簡(jiǎn)單使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python實(shí)現(xiàn)不一樣的猜數(shù)字游戲的示例代碼

    Python實(shí)現(xiàn)不一樣的猜數(shù)字游戲的示例代碼

    大家知道“猜數(shù)字”這個(gè)游戲嗎?顧名思義就是一個(gè)人想一個(gè)數(shù)字,另一個(gè)人猜。本文就來(lái)用Python實(shí)現(xiàn)一款不一樣的猜數(shù)字游戲,感興趣的可以了解一下
    2023-02-02
  • Python全棧之進(jìn)程和守護(hù)進(jìn)程

    Python全棧之進(jìn)程和守護(hù)進(jìn)程

    這篇文章主要為大家介紹了Python進(jìn)程和守護(hù)進(jìn)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • python去除擴(kuò)展名的實(shí)例講解

    python去除擴(kuò)展名的實(shí)例講解

    下面小編就為大家分享一篇python去除擴(kuò)展名的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論