首页 编程教程正文

python爬取龙王传说小说

piaodoo 编程教程 2020-02-22 22:10:46 1147 0 python教程

本文来源吾爱破解论坛

最近在学习python,想相互讨论讨论,小白贴,高手可以不用看了嗨学网
因为本人平时喜欢看小说,所以学爬虫的时候首先想到的就是爬小说网站
要爬取的网址:https://www.bxwxorg.com/read/42/
首先分析第一章和第二章,在chrome浏览器页面检查

1.png (231.46 KB, 下载次数: 0)

下载附件  保存到相册

2019-11-25 10:04 上传

2.png (239.87 KB, 下载次数: 0)

下载附件  保存到相册

2019-11-25 10:04 上传


发现章节规律仅仅是一个数字偏移量的区别 https://www.bxwxorg.com/read/42/865676.htmlhttps://www.bxwxorg.com/read/42/865677.html
接下来则是分析章节的内容

image.png (297.58 KB, 下载次数: 0)

下载附件  保存到相册

2019-11-25 10:07 上传


发现章节内容都是在p节点里面,所以利用BeautifulSoup很方便的获取整个章节的文字内容,然后保存成txt文件则完成了当前章节的爬取,由于不同章节只是一个偏移量的区别,所以只要我们做一个for循环则很方便的获取到所有的章节信息了,最后爬取完成之后发现头尾有些不想要的内容“www.bxwxorg.comNoneNone”,“喜欢斗罗大陆III龙王传说请大家收藏:(www.bxwxorg.com)斗罗大陆III龙王传说笔下文学更新速度最快。NoneNoneNoneNone 本站所有小说为转载作品,所有章节均由网友上传,转载至本站只是为了宣传本书让更多读者欣赏。None”,我是直接用字符串的方法来去头去尾了,估计有更好的方法我不知道,毕竟是个初学者,有些便捷的方法可能还不知道。
以下是我写的代码,功能可以实现了,但是我知道的都还有很多可以优化的地方,但不打算优化了,毕竟只是一个学习过程中的小程序而已,希望能对同样在学习的人有帮助吧。
以下为代码:

import requests
from bs4 import BeautifulSoup
import re

def down_one_page(url):
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'
    }
    respond = requests.get(url,headers=headers)
    if(respond.status_code == 200):
        return respond.content.decode()
    return 'err'

print('龙王传说下载1-1984\n')
begin = int(input('开始章节: '))
end = int(input('结束章节: ')) + 1

text = ''
#循环爬取各个章节
for i in range(begin,end):
    url = 'https://www.bxwxorg.com/read/42/' + str(i+865675) + '.html'
    html = down_one_page(url)

#获取章节正文内容
    soup = BeautifulSoup(html,'lxml')
    results = soup.find_all(name = 'p')
    for result in results:
        text += str(result.string)

#去除头尾不想要的字符串
    text = text.lstrip('www.bxwxorg.comNoneNone')
    text = text.rstrip('喜欢斗罗大陆III龙王传说请大家收藏:(www.bxwxorg.com)斗罗大陆III龙王传说笔下文学更新速度最快。NoneNoneNoneNone 本站所有小说为转载作品,所有章节均由网友上传,转载至本站只是为了宣传本书让更多读者欣赏。None')

#用正则方式取章节名
    name = re.findall('.*&gt; (.*?)<script>textsel',html,re.S)
    with open(name[0]+'.txt','w') as f:
        f.write(text)
#输出完成进度
    print('完成 '+ name[0])
    text = ''


源代码和封装好的exe放到百度网盘里,需要的自取
链接:https://pan.baidu.com/s/1M5xMfBNg5-QdHlpFBc_-Wg
提取码:3dtb
不知道为什么封装出来的exe会报毒,但实际上是没有病毒的,添加一下信任即可,或者自己用源代码来封装也行。

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7767.html

搜索