form1.cn
Make a little progress every day

Python爬取任意一本小说并保存txt到本地

13th of September 2022 Python Code 2736

Python爬取任意一本小说并保存txt到本地

# -*- coding: utf-8 -*-

'''
Python爬取任意一本小说并保存txt到本地
'''

# 导入包
import requests,os
from lxml import etree

# 定义方法
def downnovel(novname, savpath, ist):
	url_one = 'https://www.xbiquwx.la/modules/article/search.php?searchkey={}'.format(novname)
	r = requests.get(url_one).content.decode()
	b = etree.HTML(r)
	c = b.xpath('//*[@id="wrapper"]/table/tr[2]/td[1]/a/@href')[0]
	url = 'https://www.xbiquwx.la'+c
	r2 = requests.get(url).content
	b1 = etree.HTML(r2)
	xsm = os.path.join(savpath, novname)
	if not os.path.isdir(xsm):  
		os.makedirs(xsm)
	clist = b1.xpath('//*[@id="list"]/dl/dd')
	for i in clist:
		chapter = i.xpath('./a/text()')[0] # 章节名称
		link = i.xpath('./a/@href')[0] # 章节链接
		r1 = requests.get(url + link).content
		b2 = etree.HTML(r1)
		c1 = b2.xpath('//*[@id="content"]/text()')
		if ist == 2:
			f = open (xsm + '/' + novname + '.txt', 'a', encoding='utf-8')
			f.write (chapter + '\n')
		for d in c1:
			text = d
			if ist == 1:
				f = open (xsm + '/' + chapter + '.txt', 'a+', encoding='utf-8')
			f.write (text + '\n')
		print("下载完成:",chapter)


if __name__ == '__main__':

	# 输入要下载的小说名称,不要打错字哦
	novname = '明克街13号'

	# 设置小说的保存路径
	savpath = r'D:\Test\txt'

	# 下面参数输 1 或 2 
	ist = 2    # 1:每一章都保存一个txt,2:整部小说保存一个txt
 
	# 调用方法,开始下载
	downnovel(novname, savpath, ist)