HackerEarl

python爬虫学习01--电子书爬取

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\') #获取所有<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\') #获取所有<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\') #获取所有<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\') #获取所有<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\') # 获取所有<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\') #获取所有<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\')

ps:下载的时候可能会有点慢,下载一本书大概十几分钟,在以后学到新的方法会改善的

分类:

技术点:

相关文章: