基本开发环境
· python 3.6
· pycharm
相关模块使用
目标网页分析
输入想看的小说内容,点击搜索
这里会返回很多结果,我只选择第一个
网页数据是静态数据,但是要搜索,是post请求,需要提价data参数,如下图所示:
然后通过解析网站数据,获取第一个小说i的详情页url即可
静态网页的获取,难度是不大的。
1
2
3
4
5
6
7
8
|
def search():
search_url = 'http://www.xbiquge.la/modules/article/waps.php'
data = {
'searchkey' : name
}
response = requests.post(url = search_url, data = data, headers = headers)
selector = get_parsing(response.text)
novel_url = selector.css( '.even a::attr(href)' ).extract_first()
|
1、获取每本小说的章节名以及url地址
所有的章节名以及url地址,都包含在dd标签里面
2、获取url后,需要拼接
1
2
|
'/23/23019/11409705.html' # 这是网页获取到的url
'http://www.xbiquge.la/23/23019/11409705.html' # 这是真实的小说章节内容url地址
|
3、小说名字,直接获取即可。
1
2
3
4
5
6
7
8
9
10
11
|
def download_one_book(index_url):
response = get_response(index_url)
response.encoding = response.apparent_encoding
sel = get_parsing(response.text)
book_name = sel.css( '#info h1::text' ).get()
# 提取了所有章节的下载地址
urls = sel.css( '#list dd a::attr(href)' ).getall()
# 不要最新的 12 章放在最前main
for url in urls:
chapter_url = 'http://www.xbiquge.la' + url
print (chapter_url)
|
保存下载每章小说内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def download_one_chapter(chapter_url, book_name):
response = get_response(chapter_url)
response.encoding = response.apparent_encoding
html = response.text
selector = get_parsing(html)
h1 = selector.css( '.bookname h1::text' ).get()
content = selector.css( '#content::text' ).getall()
lines = []
for c in content:
lines.append(c.strip())
print (h1)
text = '\n' .join(lines)
file = open (book_name + '.txt' , mode = 'a' , encoding = 'utf-8' )
file .write(h1)
file .write( '\n' )
file .write(text)
file .write( '\n' )
file .close()
|
小说软件界面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
root = tk()
root.title( '小说下载器' )
root.geometry( '560x450+400+200' )
label = label(root, text = '请输入下载小说名字:' , font = ( '华文行楷' , 20 ))
label.grid()
entry = entry(root, font = ( '隶书' , 20 ))
entry.grid(row = 0 , column = 1 )
text = listbox(root, font = ( '隶书' , 16 ), width = 50 , heigh = 15 )
text.grid(row = 2 , columnspan = 2 )
button1 = button(root, text = '开始下载' , font = ( '隶书' , 15 ), command = search)
button1.grid(row = 3 , column = 0 )
button2 = button(root, text = '退出程序' , font = ( '隶书' , 15 ), command = root.quit)
button2.grid(row = 3 , column = 1 )
root.mainloop()
|
显示下载内容
1
2
3
4
5
6
|
def novel_load(title):
text.insert(end, '正在保存:{}' . format (title))
# 文本框滚动
text.see(end)
# 更新
text.update()
|
实现效果
以上就是python 制作网站小说下载器的详细内容,更多关于python 小说下载器的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/Martinaoh/p/14365832.html