python爬取龙王传说小说
最近在学习python,想相互讨论讨论,小白贴,高手可以不用看了:lol因为本人平时喜欢看小说,所以学爬虫的时候首先想到的就是爬小说网站
要爬取的网址:https://www.bxwxorg.com/read/42/
首先分析第一章和第二章,在chrome浏览器页面检查
发现章节规律仅仅是一个数字偏移量的区别 https://www.bxwxorg.com/read/42/865676.html,https://www.bxwxorg.com/read/42/865677.html
接下来则是分析章节的内容
发现章节内容都是在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('.*> (.*?)<script>textsel',html,re.S)
with open(name+'.txt','w') as f:
f.write(text)
#输出完成进度
print('完成 '+ name)
text = ''
源代码和封装好的exe放到百度网盘里,需要的自取
链接:https://pan.baidu.com/s/1M5xMfBNg5-QdHlpFBc_-Wg
提取码:3dtb
不知道为什么封装出来的exe会报毒,但实际上是没有病毒的,添加一下信任即可,或者自己用源代码来封装也行。
Traceback (most recent call last):
File "D:\Python\lib\requests\__init__.py", line 55, in <module>
assert minor <= 22
AssertionError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "G:\python\lwcs\lwcs.py", line 1, in <module>
import requests
File "D:\Python\lib\requests\__init__.py", line 57, in <module>
raise RuntimeError('Requests dependency \'urllib3\' must be version >= 1.21.1, < 1.22!')
RuntimeError: Requests dependency 'urllib3' must be version >= 1.21.1, < 1.22! hfxiang 发表于 2019-11-25 11:04
源码测试出错:
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: l ...
帮你查了一下,他们说是这个问题,具体你可以试试,我用的是python3.7
https://blog.csdn.net/qq_34215281/article/details/77714584 收藏了,我也在自学,下班研究研究 源码测试出错:
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library? 本帖最后由 丩豪丩 于 2019-11-25 11:51 编辑
hfxiang 发表于 2019-11-25 11:04
源码测试出错:
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: l ...
你是没有安装BeautifulSoup的库吧?pip install beautifulsoup4 File "C:\Users\Administrator\Desktop\lwcs\lwcs.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'测试代码爆了这个错误 原因是少了这个模块 各位大佬解释一下 丩豪丩 发表于 2019-11-25 13:52
帮你查了一下,他们说是这个问题,具体你可以试试,我用的是python3.7
https://blog.csdn.net/qq_3421 ...
正解{:1_921:}
我的也是3.7,你这个方法已让我解决了问题,谢谢{:1_893:} 在自学,尝试尝试:lol:lol 感谢分享
页:
[1]
2