本帖最后由 pzx521521 于 2018-12-1 13:40 编辑
[Python 源码]Python 简单小说爬取
说明
很简单的一个爬取小说的脚本, 新手可以参考一下
需要的包
- python3
- import requests
- from bs4 import BeautifulSoup
PS
原贴的分数太高了, 就写了一个
参考
Code
import requests
import os
from bs4 import BeautifulSoup
#以上作为基本引用
#全局变量
url_pre = "https://www.xiaoshuo2016.com"
start_url = "https://www.xiaoshuo2016.com/171445/44104877.html" #小说第一章对应的URL 例如:http://www.quanshuwang.com/book/44/44683/15379609.html
file_name = "wwyxhqc.txt" #设置保存的文件名字 建议数字或者英文名字,例如 重生于非凡岁月 可设置为 csffsy.txt
#使用的时候只需要更改上面两个变量的值即可
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
count = 0 # 计数器 计数章节数
# function: 获取每章节的小说文字并写入文件中
def getContent(content_url):
global count
count = count +1 #计数器增加
res = requests.get(content_url,headers = header,timeout = 10)
res.encoding = 'gbk'
soup = BeautifulSoup(res.text,'html.parser')
title = soup.select('.articleTitle')[0].find('h2').text #获取章节题目
content = soup.select('.articleCon')[0].text #获取章节内容
both = title + content
with open("result\\" + title+".txt", "w", encoding='utf-8') as f:
f.write(both)
print("已下载 第"+str(count)+"章") #输出到屏幕提示 状态
# 获取下个章节URL
next_url = soup.select('.page')[0].find('a').next_sibling.next_sibling.get('href');
if(next_url == ''):
return False
return getContent(url_pre+next_url)
#MAIN
if __name__ == '__main__':
File_Path = os.getcwd() + '\\result' # 获取到当前文件的目录,并检查是否有report文件夹,如果不存在则自动新建report文件
if not os.path.exists(File_Path):
os.makedirs(File_Path)
f = open(file_name, 'a+',encoding='utf-8')
getContent(start_url)
f.close()
print('小说下载完成!')
|