用python爬整本小說寫入txt檔案

2022-08-25 11:15:23 字數 4263 閱讀 4051

沒太完善,但是可以爬下整本**。日後會寫入資料庫,注釋不要太在意,都是除錯的。入庫估計這周之後,這次爬的是筆趣閣的第1150本書,大家只要可以改get_txt()裡數字就行,查到自己要看哪本書一改就可以了!

# coding:utf-8

import requests

import threading

from bs4 import beautifulsoup

import mysqldb

import re

import os

import time

import sys

import mysql # 由於爬取的資料太多,我們要把他存入mysql資料庫中,這個庫用於連線資料庫

import mysql.connector

import logging

# con = mysql.connector.connect(

# user="root",

# password='123456',

# host='localhost',

# port='3306',

# database='test11'

# )# insertsql = "insert into spider('id','title','txt_section','section_name','section_name') values (%s,%s,%s,%s,%s)"

# cursor = con.cursor()

req_header =

req_url_base = '' # **主位址

# txt_id:**編號

# txt字典項介紹

# id:**編號

# title:**題目

# first_page:第一章頁面

# section_name:章節名稱

# section_text:章節正文

# section_ct:章節頁數

def get_txt(txt_id):

txt = {}

txt['title'] = ''

txt['id'] = str(txt_id)

try:

# txt['id']=input()

req_url = req_url_base + txt['id'] + '/' # 根據**編號獲取**url

print("**編號:" + txt['id'])

res = requests.get(req_url, params=req_header) # 獲取**目錄介面

soups = beautifulsoup(res.text, "html.parser") # soup轉化

# 獲取**題目

# 獲取**最近更新時間

txt['update'] = txt['author'][2].text

# 獲取最近更新章節名稱

txt['lately'] = txt['author'][3].text

# 獲取**作者

txt['author'] = txt['author'][0].text

# 獲取**簡介

print("正在尋找第一章頁面。。。")

# 獲取**所有章節資訊

# 獲取**總章頁面數

section_ct = len(first_page)

# 獲取**第一章頁面位址

first_page = first_page[0]['href'].split('/')[3]

print("**章節頁數:" + str(section_ct))

txt_section = first_page

# 開啟**檔案寫入**相關資訊

fo = open('-.txt.download'.format(txt['id'], txt['title']), "ab+")

fo.write((txt['title'] + "\r\n").encode('utf-8'))

fo.write((txt['author'] + "\r\n").encode('utf-8'))

fo.write((txt['update'] + "\r\n").encode('utf-8'))

fo.write((txt['lately'] + "\r\n").encode('utf-8'))

fo.write(("*******簡介*******\r\n").encode('utf-8'))

fo.write(("\t" + txt['intro'] + "\r\n").encode('utf-8'))

fo.write(("******************\r\n").encode('utf-8'))

# 進入迴圈,寫入每章內容

while (1):

try:

# 請求當前章節頁面

r = requests.get(req_url + str(txt_section), params=req_header)

# soup轉換

soup = beautifulsoup(r.text, "html.parser")

# 獲取章節名稱

for ss in section_text.select("script"): # 刪除無用項

ss.decompose()

# 獲取章節文字

section_text = re.sub('\s+', '\r\n\t', section_text.text).strip('\r\n') #

# 判斷是否最後一章,當為最後一章時,會跳轉至目錄位址,最後一章則跳出迴圈

if (txt_section == './'):

break

# 以二進位制寫入章節題目

fo.write(('\r' + section_name.text + '\r\n').encode('utf-8'))

# 以二進位制寫入章節內容

fo.write((section_text).encode('utf-8'))

# print(section_text.text.encode('utf-8'))

except:

fo.close()

os.rename('-.txt.download'.format(txt['id'], txt['title']),

'-.txt'.format(txt['id'], txt['title']))

# try:

## # cursor.execute("insert into wangzhi values urlval")

# cursor.execute(insertsql%(id,title,txt_section,section_name,section_name))

## con.commit()

# except exception as err:

## print(err)

# # con.rollback()

## con.close()

# cursor.close()

except: # 出現錯誤會將錯誤資訊寫入dowload.log檔案,同時答應出來

fo_err = open('dowload.log', "ab+")

try:

fo_err.write(('[' + time.strftime('%y-%m-%d %x', time.localtime()) + "]:編號:" + ' '.format(

print('[' + time.strftime('%y-%m-%d %x', time.localtime()) + "]:編號:" + ' '.format(

os.rename(''.format(txt['id']) + '-' + txt['title'] + '.txt.download',

''.format(txt['id']) + '-' + txt['title'] + '.txt.error')

except:

fo_err.write(('[' + time.strftime('%y-%m-%d %x', time.localtime()) + "]:編號:" + ' '.format(

print('[' + time.strftime('%y-%m-%d %x', time.localtime()) + "]:編號:" + ' '.format(

finally: # 關閉檔案

fo_err.close()

get_txt(1150)

用python爬個小說

上下班,地鐵間,用手機在各類 看 時,總會有莫名其妙的彈窗,是不是很煩惱。其實我們可以借助python寫個小工具,將想看的 爬下來。我們可以通過bp 瀏覽器f12也可以,不過不如bp直觀 看一下輸入目錄頁的url之後會看到什麼資訊 該結果是乙個json格式,其中欄位chaptername代表章節名稱...

用python爬取小說章節內容

在學爬蟲之前,最好有一些html基礎,才能更好的分析網頁.主要是五步 1.獲取鏈結 2.正則匹配 3.獲取內容 4.處理內容 5.寫入檔案 如下 匯入相關model from bs4 import beautifulsoup import requests import re 獲取目標鏈結位址 ur...

用python爬取小說章節內容

在學爬蟲之前,最好有一些html基礎,才能更好的分析網頁.主要是五步 1.獲取鏈結 2.正則匹配 3.獲取內容 4.處理內容 5.寫入檔案 如下 匯入相關model 2from bs4 import beautifulsoup 3import requests 4importre5 6 獲取目標鏈結...