日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 小说爬虫_Python实现的爬取小说爬虫功能示例

發布時間:2025/3/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 小说爬虫_Python实现的爬取小说爬虫功能示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Python實現的爬取小說爬蟲功能。分享給大家供大家參考,具體如下:

想把頂點小說網上的一篇持續更新的小說下下來,就寫了一個簡單的爬蟲,可以爬取爬取各個章節的內容,保存到txt文檔中,支持持續更新保存。需要配置一些信息,設置文檔保存路徑,書名等。寫著玩,可能不大規范。

# coding=utf-8

import requests

from lxml import etree

from urllib.parse import urljoin

import re

import os

# 獲取頁面,并返回解析整理好的文本

def get_page(url):

response = requests.get(url, headers=header)

set_encoding(response)

text = parse_page(response.text)

return text

# 解析頁面,將當前頁面中的文字篩選出來

def parse_page(html):

title = re.findall('

\s+(.+?)', html)[0]

content = re.findall('div id="content">(.*?)', html, re.S)[0]

content = content.replace('

', '').replace('?', ' ').replace('\r\n\r\n', '\r\n')

content = title + '\r\n' + content + '\r\n\r\n'

return content

# 將文本追加到file_path對應的txt中

def save_page(path, text):

with open(path, 'a', encoding='utf-8') as f:

f.write(text)

# 設置對response得到文本的解析編碼為'gbk'

def set_encoding(response):

response.encoding = 'gbk'

# 從配置文件中獲取當前保存的鏈接總數

def get_current_chapters_count(path):

# (1)第一次讀配置文件可能沒有創建,所以要支持沒有文件創建文件的功能(2)如果文件存在,則不能清空,參考https://www.jb51.net/article/158740.htm

with open(path, 'a+') as f:

f.seek(0)

res = f.read()

if res == '':

return 0

else:

return int(res)

# 將保存的鏈接總數保存到配置文件中

def set_current_chapters_count(path, count):

with open(path, 'w') as f:

f.write(str(count))

# 需要配置的字典

config_dic = dict(start_url='http://www.booktxt.net/2_2220/', # 待下載小說的章節首頁

latest_item=9, # 列出的所有章節鏈接中,前面幾個鏈接為最新章節,一般為9個,爬取時避免與最后部分重復,所以前面9個鏈接不爬取

bookname='贅婿', # 待下載的小說名

folder_path='D:\\') #保存位置

domain = 'http://www.booktxt.net' # 頂點網域名

if __name__ == '__main__':

chapter_url_list = []

response = requests.get(config_dic['start_url'], headers=header)

set_encoding(response)

html = etree.HTML(response.text)

chapters = html.xpath('//dd')

print('所有鏈接' + str(len(chapters)))

chapters = chapters[config_dic['latest_item']:] # 前9章為最新章節,后面還會重復,這里去掉

print('不重復有效章節鏈接' + str(len(chapters)))

folder_path = config_dic['folder_path'] + config_dic['bookname']

if not os.path.exists(folder_path):

os.mkdir(folder_path)

file_path = folder_path + '\\' + config_dic['bookname'] + '.txt'

config_file_path = folder_path + '\\' + 'config.txt'

print('小說存儲路徑為:' + file_path)

print('配置文件存儲路徑為:' + config_file_path)

saved_count = get_current_chapters_count(config_file_path) # 獲取目前保存的小說中已經包含的章節數

print('當前' + file_path + '中已經保存的章節總數' + str(saved_count))

if saved_count < len(chapters): # 說明有更新

set_current_chapters_count(config_file_path, len(chapters))

print('共更新 ' + str(len(chapters) - saved_count) + ' 章')

for c in chapters[saved_count:]: # 從上次保存的位置開始繼續保存

url = c.xpath('a/@href')[0]

url = urljoin(domain, url)

txt = c.xpath('a/text()')[0]

chapter_url_list.append(url)

print(url)

print(txt)

save_page(file_path, get_page(url))

else:

print('小說還沒有更新哦')

希望本文所述對大家Python程序設計有所幫助。

總結

以上是生活随笔為你收集整理的python 小说爬虫_Python实现的爬取小说爬虫功能示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。