Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》

简介: Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
+关注继续查看

输出结果

image.png

image.png

核心代码

# -*- coding: utf-8 -*-

'''

Created on 2018年4月7日

@author: niu

'''

#Py之Crawler:利用beautifulsoup+find_all方法实现下载在线书架小说《星祖的电影世界》

#find_all方法的第一个参数是获取的标签名,第二个参数class_是标签的属性。

from bs4 import BeautifulSoup

import requests, sys

class downloader(object):

? ?def __init__(self):

? ? ? ?self.server = 'http://www.biqukan.com/'

? ? ? ?self.target = 'http://www.biqukan.com/50_50927/'

? ? ? ?self.names = [] ? ? ? ? ? ?#存放章节名

? ? ? ?self.urls = [] ? ? ? ? ? ?#存放章节链接

? ? ? ?self.nums = 0 ? ? ? ? ? ?#章节数

? ?def get_download_url(self): #获取下载链接

? ? ? ?req = requests.get(url = self.target)

? ? ? ?html = req.text

? ? ? ?div_bf = BeautifulSoup(html) ?#利用beautifulsoup提取内容

? ? ? ?div = div_bf.find_all('div', class_ = 'listmain') #通过审查元素发现全书各个章节存放在了class属性为listmain的div标签下,各章之间差别就在于这些章节的【href】属性不一样,而且其属性正好对应着每一章节URL后半部分,那这样,我们就可以根据标签的href属性值获得每个章节的链接和名称了。

? ? ? ?a_bf = BeautifulSoup(str(div[0]))

? ? ? ?a = a_bf.find_all('a') ?

? ? ? ?self.nums = len(a[14:]) ? ? ?#剔除不必要的章节,并统计章节数

? ? ? ?for each in a[14:]:

? ? ? ? ? ?self.names.append(each.string)

? ? ? ? ? ?self.urls.append(self.server + each.get('href')) #再接着提取章节名和章节文章

? ?def get_contents(self, target): #获取章节内容,target下载连接(string),texts章节内容(string)

? ? ? ?req = requests.get(url = target)

? ? ? ?html = req.text

? ? ? ?bf = BeautifulSoup(html)

? ? ? ?texts = bf.find_all('div', class_ = 'showtxt') #观察不同标签发现class属性为showtxt的div标签只有一个!这个标签里面存放的内容,是我们需要的小说正文

? ? ? ?texts = texts[0].text.replace('\xa0'*8,'\n\n') ?#replace方法,剔除空格,替换为回车进行分段。 在html中是用来表示空格的。replace(‘\xa0’*8,’\n\n’)就是去掉下图的八个空格符号,并用回车代替

? ? ? ?return texts

? ?def writer(self, name, path, text): #将爬取的文章内容写入文件

? ? ? ?write_flag = True

? ? ? ?with open(path, 'a', encoding='utf-8') as f: #当前路径下,小说保存名称(string)

? ? ? ? ? ?f.write(name + '\n') ?#章节名称(string)

? ? ? ? ? ?f.writelines(text) ?#章节内容(string)

? ? ? ? ? ?f.write('\n\n')

if __name__ == "__main__":

? ?dl = downloader()

? ?dl.get_download_url()

? ?print('《星祖的电影世界》开始下载:')

? ?for i in range(dl.nums):

? ? ? ?dl.writer(dl.names[i], '星祖的电影世界.txt', dl.get_contents(dl.urls[i]))

? ? ? ?sys.stdout.write(" ?已下载:%.3f%%" % ?float(i/dl.nums) + '\r')

? ? ? ?sys.stdout.flush()

? ?print('《星祖的电影世界》下载完成')


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
推理速度提升29倍,参数少1/10,阿里提出AdaBERT压缩方法
作为当前最佳的自然语言处理模型,BERT 却存在规模大、成本高和实时性差等缺点。为了能在实际应用中部署这种技术,有必要对 BERT 进行压缩。此前机器之心就已经介绍了几种来自不同研究机构的压缩方案,参阅《内存用量 1/20,速度加快 80 倍,腾讯 QQ 提出全新 BERT 蒸馏框架,未来将开源》和《AAAI 2020 | 超低精度量化 BERT,UC 伯克利提出用二阶信息压缩神经网络》。
4 0
《这!就是街舞》自由视角沉浸式体验黑科技揭秘
《这!就是街舞》第四季大家看了吗?不知道有没有小伙伴跟笔者一样,“DNA”都要跟着舞动了起来。除了炸裂的舞台,堪比跨次元的真实观影体验,让用户在自由视角视频体验效果下身临其境:
4 0
声称掌握核心技术,实则换皮Python?国产编程语言木兰引起社区热议
近日有媒体称,一款面向智能物联网和编程教育的国产编程语言出世,名为木兰。消息一出,引起了开发者社区的讨论。但有人发现,下载的程序包解包后——是个 Python?
5 0
第一次胜过MobileNet的二值神经网络,-1与+1的三年艰苦跋涉
近日,苹果以 2 亿美元左右价格收购初创公司 Xnor.ai 的消息引起了社区极大的关注。作为一家以二值神经网络 Xnor-net 起家的人工智能初创公司,Xnor.ai 被苹果高价收购,也许预示着低功耗、高效能的二值神经网络技术将开启广阔的应用前景。
4 0
AAAI 2020 | 超低精度量化BERT,UC伯克利提出用二阶信息压缩神经网络
2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办。不久之前,大会官方公布了今年的论文收录信息:收到 8800 篇提交论文,评审了 7737 篇,接收 1591 篇,接收率 20.6%。为向读者们分享更多的优质内容、促进学术交流,在 AAAI 2020 开幕之前,机器之心策划了多期线上分享。
5 0
暗中观察,没有「头环」:AI摄像头就可以看出你上课是否走神
在AI摄像头走进课堂后,伪装认真听课也是越来越难了。近日,港科大、哈工程的研究者开发了一种用AI摄像头记录、分析学生情感变化的系统,不仅能知道学生什么时候开始走神,还能具体看到每个学生一整节课的「心路历程」。
6 0
打破谷歌封锁,华为HMS Core逆风出世,鸿蒙系统稳了
随着 HMS Core 逆风出世,华为在打破美国、谷歌封锁上又迈出重要一步。
4 0
中科院计算所对「木兰」问题进行处理:当事人停职,将深入调查
国产编程语言「木兰」在推出之后受到了人们的质疑。昨天下午,中国科学院计算技术研究所对此进行了回应。
4 0
python抢21游戏
python抢21游戏
5 0
通过数组模拟ArrayList结构,完成容器的创建、添加、修改、删除,以及可以 遍历自定义的结构,
通过数组模拟ArrayList结构,完成容器的创建、添加、修改、删除,以及可以 遍历自定义的结构,
3 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载
http://www.vxiaotou.com