【python】记小白的第二次爬小说【138看书网】
本帖最后由 tuhaojun 于 2020-9-21 16:50 编辑记录一下今天爬的第二个小说网,第二次弄起来比较熟练了,不像第一次弄一半就得找教程边看边搞。
但实际上爬小说应该是最简单的事情了吧,涉及的技术也没有那么深。
把代码发出来让想刚入门却不知道从何下手的同萌新们看看吧,看教程总是云里雾里的,还是还得上手多练练才能加深印象。
这个小说爬虫还是有点垃圾,多线程没有,而且有些函数也是用的跟*一样,这玩意该怎么改进也没有头绪。
希望有大佬能指点一下{:1_923:}
import requests
import re
headers = {
'user-agent': 'User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
print ('本脚本仅适用于138看书网:https://www.13800100.com/')
#url_list = 'https://www.13800100.com/list/51047/'
url_list = (input('粘贴小说目录url,必须是小说目录,小说首页不支持\n'))
downurl = 'https://www.13800100.com/article/'
url_list = requests.get(url_list)
text_list = url_list.text
#爬小说书名
text_title = re.findall(r'<div class="cate-tit">(.*?)</h2>',text_list,re.S)
text_title = text_title.replace('\r\n','')
text_title = text_title.replace('<h2>','')
text_title = text_title.replace(' ','')
#爬小说目录列表
text_list_info = re.findall(r'<div class="bd">.*?</div>',text_list,re.S)
text_list_info = re.findall(r'<a href="/article/(.*?)" class="name">(.*?)</a>',text_list)
for i in text_list_info:
#每章小说的url和每章章名
list = i
name = i
download = downurl + list
download_info = requests.get(url = download,headers=headers)
html=download_info.text
html_info = re.findall(r'<div class=".*?">(.*?)</div>',html,re.S)
html_info = html_info.replace (' ','')
html_info = html_info.replace ('<br/>',('\n'))
html_info = html_info.replace (' '* 4,'')
html_info = html_info.replace (' '* 2,'')
print (name)
#输出为记事本
with open ('%s.txt' % text_title,'a+',encoding = 'utf-8')as f:
f.write(' '+ name + '\n')
f.write('\n')
f.write(html_info + '\n')
f.write('\n')
print ('下载完成')
继续加油努力吧:victory:
----------------------------------------------------------------------------------------------------关于脚本的说明-----------------------------------------------------------------------------------------------
脚本要求输入的url必须是小说的目录,而不是小说的首页
1.可以挑战一下非常适用于交互式的搜索功能
2.尝试通过识别URL支持输入小说的首页
3.尝试加入下载选中章节功能
4.尝试直接输入小说id功能
5.尝试追加更新功能
6.尝试追更功能
7.尝试加入通过域名识别来扩展支持不同的小说网站 绫音 发表于 2020-9-28 18:24
为毛我下载只下载了目录标题内容没下载
52破解的代码展示有点问题 不显示特殊字符
你把html_info函数改一下
html_info = re.findall(r'<div ondragstart="return false" oncopy="return false;" oncut="return false;" oncontextmenu="return false" class=".*?">(.*?)</div>',html,re.S)
html_info = html_info.replace (' ','')
html_info = html_info.replace ('<br/>',('\n'))
html_info = html_info.replace (' '* 4,'')
html_info = html_info.replace (' '* 2,'') 这个可以有? 支持学习学习。 感谢分享,学习一下
感谢分享,学习使我快乐 学习了。就是感觉现在总沉不下心来做东西 感谢分享 其实我就想问,正则和Xpath,那个更好用? 感谢分享,正在试用,