tuhaojun 发表于 2020-9-21 03:12

【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必须是小说的目录,而不是小说的首页



loliconRoot 发表于 2020-9-21 06:55

1.可以挑战一下非常适用于交互式的搜索功能
2.尝试通过识别URL支持输入小说的首页
3.尝试加入下载选中章节功能
4.尝试直接输入小说id功能
5.尝试追加更新功能
6.尝试追更功能
7.尝试加入通过域名识别来扩展支持不同的小说网站

tuhaojun 发表于 2020-9-29 02:01

绫音 发表于 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 ('&nbsp;'* 4,'')
    html_info = html_info.replace ('&nbsp;'* 2,'')

haidao123 发表于 2020-9-21 05:26

这个可以有?

jwpiaoi 发表于 2020-9-21 07:00

支持学习学习。

jiongjing 发表于 2020-9-21 07:51

感谢分享,学习一下

jiwuhui 发表于 2020-9-21 07:57

感谢分享,学习使我快乐

zhuobin_c 发表于 2020-9-21 08:35

学习了。就是感觉现在总沉不下心来做东西

diom 发表于 2020-9-21 08:41

感谢分享

EVANLEE 发表于 2020-9-21 08:44

其实我就想问,正则和Xpath,那个更好用?

yc0205 发表于 2020-9-21 08:49

感谢分享,正在试用,
页: [1] 2 3 4
查看完整版本: 【python】记小白的第二次爬小说【138看书网】