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('《星祖的电影世界》下载完成')


相关文章
|
4月前
|
数据采集 开发者 Python
Python爬虫实战:利用Beautiful Soup解析网页数据
在网络爬虫的开发过程中,数据解析是至关重要的一环。本文将介绍如何利用Python的Beautiful Soup库来解析网页数据,包括解析HTML结构、提取目标信息和处理特殊情况,帮助开发者更好地实现爬虫功能。
|
6月前
|
数据采集 Python
Python和BeautifulSoup库的魔力:解析TikTok视频页面
短视频平台如TikTok已成为信息传播和电商推广的重要渠道。用户通过短视频分享生活、创作内容,吸引了数以亿计的观众,为企业和创作者提供了广阔的市场和宣传机会。然而,要深入了解TikTok上的视频内容以及用户互动情况,需要借助爬虫技术。本文将介绍如何使用Python和BeautifulSoup库解析TikTok视频页面,并通过统计分析视频信息,帮助您更好地利用这一重要渠道。
Python和BeautifulSoup库的魔力:解析TikTok视频页面
|
2月前
|
数据采集 XML 程序员
揭秘YouTube视频世界:利用Python和Beautiful Soup的独特技术
本文介绍了如何使用Python和Beautiful Soup库抓取YouTube视频数据,包括标题、观看次数和点赞、踩的数量。通过亿牛云爬虫代理IP服务避免被网站屏蔽,提供代理服务器配置和请求头设置示例。代码可能需根据YouTube页面更新进行调整。
揭秘YouTube视频世界:利用Python和Beautiful Soup的独特技术
|
4月前
|
XML JavaScript 数据处理
BeautifulSoup和Cheerio库:解析QQ音频文件的完整教程
BeautifulSoup和Cheerio库:解析QQ音频文件的完整教程
|
5月前
|
数据采集 XML 数据格式
python爬虫入门篇:如何解析爬取到的网页数据?试下最简单的BeautifulSoup库!
前面笔记解析了如何使用requests模块向网站发送http请求,获取到网页的HTML数据。这篇我们来如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据。Beautiful Soup,简称bs4,是Python的一个HTML或XML的解析库,一般用它来从网页中提取数据。
60 1
|
7月前
|
机器学习/深度学习 数据采集 XML
使用BeautifulSoup解析豆瓣网站的HTML内容并查找图片链接
使用BeautifulSoup解析豆瓣网站的HTML内容并查找图片链接
|
8月前
|
数据库 Python
|
XML 数据格式 Python
如何利用 Beautiful Soup 爬取网页数据
如何利用 Beautiful Soup 爬取网页数据
160 0
如何利用 Beautiful Soup 爬取网页数据
|
Web App开发 iOS开发 Windows
Crawler:基于BeautifulSoup库+requests库实现爬取2018最新电影《后来的我们》热门短评
Crawler:基于BeautifulSoup库+requests库实现爬取2018最新电影《后来的我们》热门短评
Crawler:基于BeautifulSoup库+requests库实现爬取2018最新电影《后来的我们》热门短评
|
JSON 数据格式 Python
Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息
Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息
Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息