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


相关文章
|
数据采集 Python
Python和BeautifulSoup库的魔力:解析TikTok视频页面
短视频平台如TikTok已成为信息传播和电商推广的重要渠道。用户通过短视频分享生活、创作内容,吸引了数以亿计的观众,为企业和创作者提供了广阔的市场和宣传机会。然而,要深入了解TikTok上的视频内容以及用户互动情况,需要借助爬虫技术。本文将介绍如何使用Python和BeautifulSoup库解析TikTok视频页面,并通过统计分析视频信息,帮助您更好地利用这一重要渠道。
141 0
Python和BeautifulSoup库的魔力:解析TikTok视频页面
|
7月前
|
数据采集 开发者 Python
Python爬虫实战:利用Beautiful Soup解析网页数据
在网络爬虫的开发过程中,数据解析是至关重要的一环。本文将介绍如何利用Python的Beautiful Soup库来解析网页数据,包括解析HTML结构、提取目标信息和处理特殊情况,帮助开发者更好地实现爬虫功能。
|
7月前
|
Python
pythonSpider_urllib获取豆瓣电影top250信息写入excel
pythonSpider_urllib获取豆瓣电影top250信息写入excel
60 0
|
6月前
|
数据采集 Web App开发 数据挖掘
使用Python和BeautifulSoup轻松抓取表格数据
使用Python和BeautifulSoup,结合代理IP,可以从网页抓取表格数据,如中国气象局的天气信息。通过requests库发送HTTP请求,BeautifulSoup解析HTML提取表格。安装必要库后,设置代理IP,发送请求,解析HTML找到表格,提取数据并存储。通过Pandas进行数据分析,如计算平均气温。这种方法让数据抓取和分析变得更加便捷。
140 3
使用Python和BeautifulSoup轻松抓取表格数据
|
7月前
|
数据采集 存储 监控
Python爬虫实战:利用BeautifulSoup解析网页数据
在网络信息爆炸的时代,如何快速高效地获取所需数据成为许多开发者关注的焦点。本文将介绍如何使用Python中的BeautifulSoup库来解析网页数据,帮助你轻松实现数据抓取与处理的技术。
|
数据采集 SQL 移动开发
【Python爬虫】Beautifulsoup4中find_all函数
【Python爬虫】Beautifulsoup4中find_all函数
|
7月前
|
数据采集 XML 数据格式
python爬虫入门篇:如何解析爬取到的网页数据?试下最简单的BeautifulSoup库!
前面笔记解析了如何使用requests模块向网站发送http请求,获取到网页的HTML数据。这篇我们来如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据。Beautiful Soup,简称bs4,是Python的一个HTML或XML的解析库,一般用它来从网页中提取数据。
104 1
|
7月前
|
XML JavaScript 数据处理
BeautifulSoup和Cheerio库:解析QQ音频文件的完整教程
BeautifulSoup和Cheerio库:解析QQ音频文件的完整教程
|
机器学习/深度学习 数据采集 XML
使用BeautifulSoup解析豆瓣网站的HTML内容并查找图片链接
使用BeautifulSoup解析豆瓣网站的HTML内容并查找图片链接
|
数据库 Python