1. 程式人生 > >爬取我喜歡的小說

爬取我喜歡的小說

set imp link 需要 line .html lsp sci @class

看個小說,各種廣告煩人,自己寫個爬蟲爬到本地

#首先創個爬蟲 -創建 CrawlSpider 爬蟲

scrapy genspider -c crawl [爬蟲名字] [域名]

#settings.py 文件操作不做解釋

#爬取規則

#xpath需要根據具體的爬取內容設置,可以結合scrapy shell 和 谷歌瀏覽器的xpath tool判斷class RentianSpider(CrawlSpider):

    name = rentian
    allowed_domains = [www.suimeng.com]
    start_urls = [https://www.suimeng.com/files/article/html/6/6293/29891957.html
] rules = ( Rule(LinkExtractor(allow=r.+\d+.html), callback=parse_content, follow=True), ) def parse_content(self, response): title=response.xpath("//div[@class=‘ctitle‘]/text()").get().strip() contentList = response.xpath("//div[@class=‘ccontent‘]/text()").getall() content
= ""
  
     #去除空格和換行 for contentStr in contentList: contentStr = contentStr.replace(\r\n,‘‘) content = content+contentStr item = XiaoshuoItem(title=title,content=content) yield item

#設置items

import scrapy


class XiaoshuoItem(scrapy.Item):
    title 
= scrapy.Field() content = scrapy.Field()

# pipelines.py

#下載下來的json要註意格式 []和,

#否則解析會出現問題

from scrapy.exporters import JsonLinesItemExporter
import codecs
import json
import os

class TzbzdsPipeline(object):
    def __init__(self):
        super().__init__()  # 執行父類的構造方法
        self.fp = codecs.open(xiaoshuo.json, w, encoding=utf-8)
        self.fp.write([)

    def process_item(self, item, spider):
        # 將item轉為字典
        d = dict(item)
        # 將字典轉為json格式
        string = json.dumps(d, ensure_ascii=False)
        self.fp.write(string + ,\n)  # 每行數據之後加入逗號和換行
        return item

    def close_spider(self,spider):
        self.fp.seek(-2, os.SEEK_END)  # 定位到倒數第二個字符,即最後一個逗號
        self.fp.truncate()  # 刪除最後一個逗號
        self.fp.write(])  # 文件末尾加入一個‘]’
        self.fp.close()   # 關閉文件

#大功告成,把爬取下來的文件放到我自己的 iOS項目中,就可以閱讀了   


爬取我喜歡的小說