1. 程式人生 > >使用scrapy爬取小說網站

使用scrapy爬取小說網站

宣告:僅供學習交流使用

  • items.py ->內容模板
import scrapy

class QqduItem(scrapy.Item):

    book = scrapy.Field()
    bookId = scrapy.Field()
    chapter = scrapy.Field()
    chapterId = scrapy.Field()
    content = scrapy.Field()
  • book.py ->爬蟲檔案
# -*- coding: utf-8 -*-

import scrapy, sys
from qqdu.items import
QqduItem from scrapy.http import Request reload(sys) sys.setdefaultencoding("gbk") class BookSpider(scrapy.Spider): name = 'book' allowed_domains = ['www.77dus.com'] start_urls = ['https://www.77dus.com/html/82/82709/index.html'] # 索要爬取小說的網址 def parse(self, response): result = response.xpath('//*[@id="wp"]/div/div/div/ul/li/a/@href'
).extract() # 獲取章節連結 for sel in result: yield Request('https://www.77dus.com' + sel, meta={'fileName': sel}, callback=self.bookContent) def bookContent(self, response): baseUrl = response.url item = QqduItem() book = response.xpath('//*[@id="content"]/div[1]/p/a[1]/text()'
).extract()[0] # 獲取書名 chapter = response.xpath('//h1[@class="novel_title"]/text()').extract()[0] # 獲取章節名 contents = response.xpath('//div[@class="novel_content"]/text()').extract() # 獲取內容 # 拼接小說內容 text = (chapter + "\r\n\r\n") for rel in contents: text += rel baseUrl = baseUrl.split('.')[2] baseUrl = baseUrl.split('/') bookId = baseUrl[-2] # 獲取書id chapterId = baseUrl[-1] # 獲取章節id item['book'] = book item['bookId'] = bookId item['chapter'] = chapter item['chapterId'] = chapterId item['content'] = text yield item
  • pipelines.py ->管道檔案,用於對所爬取內容進行操作
import os
import sys
import codecs,pymongo

reload(sys)
sys.setdefaultencoding("gbk")

# 儲存到檔案
class QqduPipeline(object):
    def process_item(self, item, spider):
        curPath = 'qqdubooks'
        tempPath = str(item['book'])
        targetPath = curPath + os.path.sep + tempPath
        if not os.path.exists(targetPath):
            os.makedirs(targetPath)
        filename_path = targetPath + os.path.sep + str(item['chapterId']) + '.txt'
        file = codecs.open(filename_path, 'w', encoding='utf-8')
        file.write(item['content'] + "\r\n")
        file.close()
        return item

# # 儲存到mongoDb資料庫
# class QqduPipeline(object):
#     def __init__(self):
#         host = "127.0.0.1"
#         port = 27017
#         dbname = "qqdb"
#         sheetname = "qqdbbooks"
#         # 建立MONGODB資料庫連結
#         client = pymongo.MongoClient(host=host, port=port)
#         # 指定資料庫
#         mydb = client[dbname]
#         # 存放資料的資料庫表名
#         self.post = mydb[sheetname]
#
#     def process_item(self, item, spider):
#         data = dict(item)
#         self.post.insert(data)
#         return item
  • 在settings.py 開啟管道,新增如下內容
ITEM_PIPELINES = {
   'qqdu.pipelines.QqduPipeline': 300,
}

相關推薦

使用scrapy小說網站

宣告:僅供學習交流使用 items.py ->內容模板 import scrapy class QqduItem(scrapy.Item): book = scrapy.Fie

Scrapy知名網站的圖書資訊

開啟虛擬環境,建立專案檔案 開啟控制檯,輸入workon py3scrapy 進入虛擬環境所在盤(我的是E盤) 建立專案檔案,輸入scrapy startproj

scrapy西刺網站ip

close mon ins css pro bject esp res first # scrapy爬取西刺網站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem clas

python scrapy皇冠體育源碼下載網站數據二(scrapy使用詳細介紹)

時間 源碼 保存文件 i+1 zh-cn china flat url def 1、scrapy工程創建皇冠體育源碼下載論壇:haozbbs.com Q1446595067 在命令行輸入如下命令,創建一個使用scrapy框架的工程 scrapy startproject s

Scrapy培訓網站講師資訊

Scrapy 框架 Scrapy是用純Python實現一個為了爬取網站資料、提取結構性資料而編寫的應用框架,用途非常廣泛。 框架的力量,使用者只需要定製開發幾個模組就可以輕鬆的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便。 Scrapy 使用

43.scrapy鏈家網站二手房信息-1

response ons tro 問題 import xtra dom nts class 首先分析:目的:采集鏈家網站二手房數據1.先分析一下二手房主界面信息,顯示情況如下:url = https://gz.lianjia.com/ershoufang/pg1/顯示

43.scrapy鏈家網站二手房資訊-1

  首先分析:目的:採集鏈家網站二手房資料1.先分析一下二手房主介面資訊,顯示情況如下:url = https://gz.lianjia.com/ershoufang/pg1/顯示總資料量為27589套,但是頁面只給返回100頁的資料,每頁30條資料,也就是隻給返回3000條資料。

44.scrapy鏈家網站二手房資訊-2

全面採集二手房資料:網站二手房總資料量為27650條,但有的引數欄位會出現一些問題,因為只給返回100頁資料,具體檢視就需要去細分請求url引數去請求網站資料。我這裡大概的獲取了一下篩選條件引數,一些存在問題也沒做細化處理,大致的採集資料量為21096,實際19794條。看一下執行完成結果: {'d

網站住房資訊並把結果儲存到資料庫中

from bs4 import BeautifulSoup import requests, pymongo #啟用MongoDB client = pymongo.MongoClient('localhost', 27017) #給資料庫命名 xiaozhu = client['xiao

利用scrapy需要登入的網站的資料(包含驗證碼的處理)

利用scrapy爬取需要登入的網站的資料(包含驗證碼的處理)–以爬取豆瓣網資料為例 1、在cmd命令列中輸入 scrapy startproject douban,建立scrapy爬蟲專案  2、在cmd命令列中調整到douban專案資料夾下輸入 scrapy genspider -t

利用scrapy框架遞迴菜譜網站

介紹: 最近學習完scrapy框架後,對整個執行過程有了進一步的瞭解熟悉。於是想著利用該框架對食譜網站上的美食圖片進行抓取,並且分別按照各自的命名進行儲存。 1、網頁分析 爬取的網站是www.xinshipu.com,在爬取的過程中我發現使用xpath對網頁進行解析時總是找不到對應的標籤

scrapy爬蟲動態網站

爬取360圖片上的美女圖片 360圖片網站上的圖片是動態載入的,動態載入 就是通過ajax請求介面拿到資料喧染在網頁上。我們就可以通過遊覽器的開發者工具分析,在我們向下拉動視窗時就會出現這麼個請求,如圖所示: 所以就判定這個url就是ajax請求的介面:

利用scrapy輕鬆招聘網站資訊並存入MySQL

前言 Scrapy版本:1.4; Python版本:3.6; OS:win10; 本文完整專案程式碼:完整示例; 本文目標: 通過爬取騰訊招聘網站招聘崗位,熟悉scrapy,並掌握資料庫儲存操作; 一、準備工作 ♣   基礎工作 首先你要安裝S

scrapy愛上租網站的房源資訊(一)

爬取的頁面如下:愛上租的租房頁面 需要爬取該頁面下所有房間的基本資訊 scrapy框架的安裝和使用教程參考以下連結  http://www.scrapyd.cn/doc/178.html 首先在spiders目錄下新建一個house_spider.py,將上面爬

【實戰】scrapy-redis + webdriver 航空網站

引言 今天給大家帶來的是scrapy-redis + webdriver實戰案例。在爬蟲編寫過程中,我們經常會遇到以下的情況,想要用scrapy框架,但是因為網站的原因,還想要用webdriver,那麼要如何實現scrapy + webdriver呢?其實很簡單,大家都知道,在scrapy中,我

Python爬蟲scrapy框架動態網站——scrapy與selenium結合資料

 scrapy框架只能爬取靜態網站。如需爬取動態網站,需要結合著selenium進行js的渲染,才能獲取到動態載入的資料。如何通過selenium請求url,而不再通過下載器Downloader去請求這個url?方法:在request物件通過中介軟體的時候,在中介軟體內部開始

用Python Scrapy某電影網站並存儲入mysql

爬取目標:javlib,使用框架Scrapy 首先使用在命令列裡scrapy startproject projectname和scrapy genspider spidername指令建立爬蟲。 首先定義items.pyimport scrapy class Av

Scrapy知名技術網站文章並儲存到MySQL資料庫

之前的幾篇文章都是在講如何把資料爬下來,今天記錄一下把資料爬下來並儲存到MySQL資料庫。 文章中有講同步和非同步兩種方法。 所有文章文章的地址:http://blog.jobbole.com/all-posts/ 對所有文章

Python scrapy實踐應用,電影網站的影片資源並存入資料庫

知識點 scrapy 分頁爬取。 scrapy提取頁面元素之xpath表示式語法 scrapy 配合pymysql儲存爬取到的資料到mysql資料庫 scrapy.Request(……)向回撥方法傳遞額外資料 資料庫儲存前先

python爬蟲--scrapy騰訊招聘網站

背景:虛擬機器Ubuntu16.04,爬取https://hr.tencent.com/招聘資訊!第一步:新建專案:scrapy startproject tencent第二步:編寫items檔案 1 # -*- coding: utf-8 -*- 2 3 # D