零基础入门Python爬虫之网页电子书批量爬取

零基础入门Python爬虫之网页电子书批量爬取_第1张图片

 

 

小说迷有福了。学会这个,不用再受网页端广告的骚扰,也不用再花钱去各个小说平台看了。自己批量爬取他不香吗?

对于爱学习的朋友来说也是福音呀。各种资料去爬取,保存下来。更加有利于提高自己的学习效率。

上述两点都是小道,最重要的是爬虫学习的好,是可以工作或者去接单挣外快的。

python爬虫学习实践之电子书爬取

1.获取网页信息

import requests        #导入requests库
'''
获取网页信息
'''
if __name__ == '__main__':          #主函数入口
    target = 'https://www.xsbiquge.com/78_78513/108078.html'#要爬取的目标地址
    req = requests.get(url=target)  #进行get请求
    req.encoding='utf-8'            #设置编码
    print(req.text)                 #打印输出

2.引入BeautifulSoup对网页内容进行解析

import requests        #导入requests库
from bs4 import BeautifulSoup  #引入BeautifulSoup库

'''
引入BeautifulSoup对网页内容进行解析
获取网页电子书文本信息
'''
if __name__ == '__main__':          #主函数入口
    target = 'https://www.xsbiquge.com/78_78513/108078.html'#要爬取的目标地址
    req = requests.get(url=target)  #发起请求,获取html信息
    req.encoding='utf-8'            #设置编码
    html = req.text                 #将网页的html信息保存在html变量中
    bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
    texts = bs.find('div',id='content') #获取所有
的内容 print(texts) #打印输出

3.切分数据,去掉空格,提取文字

import requests        #导入requests库
from bs4 import BeautifulSoup  #引入BeautifulSoup库

'''
引入BeautifulSoup对网页内容进行解析
获取网页电子书文本信息
最后一句texts.text 是提取所有文字,然后再使用 strip 方法去掉回车,
最后使用 split 方法根据 \\xa0 切分数据,因为每一段的开头,都有四个空格
'''
if __name__ == '__main__':          #主函数入口
    target = 'https://www.xsbiquge.com/78_78513/108078.html'#要爬取的目标地址
    req = requests.get(url=target)  #发起请求,获取html信息
    req.encoding='utf-8'            #设置编码
    html = req.text                 #将网页的html信息保存在html变量中
    bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
    texts = bs.find('div',id='content') #获取所有
的内容 print(texts.text.strip().split('\\xa0'*4)) #打印输出

4.查看章节列表

import requests        #导入requests库
from bs4 import BeautifulSoup  #引入BeautifulSoup库

'''
查看章节列表信息
引入BeautifulSoup对网页内容进行解析
获取网页电子书文本信息

'''
if __name__ == '__main__':          #主函数入口
    target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
    req = requests.get(url=target)      #发起请求,获取html信息
    req.encoding='utf-8'                #设置编码
    html = req.text                     #将网页的html信息保存在html变量中
    bs = BeautifulSoup(html,'lxml')     #使用lxml对网页信息进行解析
    chapters = bs.find('div',id='list') #获取所有
的内容 chapters = chapters.find_all('a') #找到list中的a标签中的内容 for chapter in chapters: print(chapter) #打印章节列表

5.获取章节目录和章节链接

import requests        #导入requests库
from bs4 import BeautifulSoup  #引入BeautifulSoup库

'''
查看章节列表信息
引入BeautifulSoup对网页内容进行解析
获取网页电子书文本信息

'''
if __name__ == '__main__':          #主函数入口
    server = 'https://www.xsbiquge.com'
    target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
    req = requests.get(url=target)      #发起请求,获取html信息
    req.encoding='utf-8'                #设置编码
    html = req.text                     #将网页的html信息保存在html变量中
    bs = BeautifulSoup(html,'lxml')     #使用lxml对网页信息进行解析
    chapters = bs.find('div',id='list') #获取所有
的内容 chapters = chapters.find_all('a') #找到list中的a标签中的内容 for chapter in chapters: url = chapter.get('href') #获取章节链接中的href print(""+chapter.string+"") #打印章节名字 print(server+url) #将电子书网站与获取到的章节连接进行拼接,得到每一个章节的链接

6.整合数据,下载电子书文档

import requests        #导入requests库
from bs4 import BeautifulSoup  #引入BeautifulSoup库
import time
from tqdm import  tqdm


'''
查看章节列表信息
引入BeautifulSoup对网页内容进行解析
获取网页电子书文本信息

'''
def get_content(target):
    req = requests.get(url=target)  # 发起请求,获取html信息
    req.encoding = 'utf-8'  # 设置编码
    html = req.text  # 将网页的html信息保存在html变量中
    bf = BeautifulSoup(html, 'lxml')  # 使用lxml对网页信息进行解析
    texts = bf.find('div', id='content')  # 获取所有
的内容 content = texts.text.strip().split('\\xa0' * 4) return content if __name__ == '__main__': #主函数入口 server = 'https://www.xsbiquge.com' #电子书网站地址 book_name = '《元尊》.txt' target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址 req = requests.get(url=target) #发起请求,获取html信息 req.encoding='utf-8' #设置编码 html = req.text #将网页的html信息保存在html变量中 chapter_bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析 chapters = chapter_bs.find('div',id='list') #获取所有
的内容 chapters = chapters.find_all('a') #找到list中的a标签中的内容 for chapter in tqdm(chapters): chapter_name = chapter.string #章节名字 url = server + chapter.get('href') #获取章节链接中的href content = get_content(url) with open(book_name,'a',encoding='utf-8') as f: f.write(""+chapter_name+"") f.write('\n') f.write('\n'.join(content)) f.write('\n')

刚开始下载的时候可能会有点慢,下载一本书十分钟。后续碰到更好的方式也会分享出来的了。大家有更好的建议也可以一起交流哈。

需要想学习的小哥哥小姐姐们可以进我的技术交流群,即可获取。还请多理解。
群内有各路大神交流,还有专业老师一对一答疑。不要错过咯。q裙:6+011+53+105。群内Python学习资料免费领取

你可能感兴趣的:(零基础入门Python爬虫之网页电子书批量爬取)