爬取我喜歡的小說
阿新 • • 發佈:2019-02-22
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項目中,就可以閱讀了
爬取我喜歡的小說