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')

python爬虫学习01--电子书爬取的更多相关文章

  1. Python爬虫学习之正则表达式爬取个人博客

    实例需求:运用python语言爬取http://www.eastmountyxz.com/个人博客的基本信息,包括网页标题,网页所有图片的url,网页文章的url.标题以及摘要. 实例环境:pytho ...

  2. Python爬虫学习笔记之爬取新浪微博

    import requests from urllib.parse import urlencode from pyquery import PyQuery as pq from pymongo im ...

  3. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

  4. Python爬虫:为什么你爬取不到网页数据

    前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...

  5. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  6. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  7. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  8. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  9. python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

    小帅b说过 在这几篇中会着重说说将爬取下来的数据进行存储 上次我们说了一种 csv 的存储方式 这次主要来说说怎么将爬取下来的数据保存到 MySQL 数据库 接下来就是 学习python的正确姿势 真 ...

随机推荐

  1. Ubuntu:E: Sub-process /usr/bin/dpkg returned an error code (1)

    Ubuntu系统安装软件时报以下错误: E: Sub-process /usr/bin/dpkg returned an error code (1) 解决: mv /var/lib/dpkg/inf ...

  2. 五个Taurus垃圾回收compactor优化方案,减少系统资源占用

    简介 TaurusDB是一种基于MySQL的计算与存储分离架构的云原生数据库,一个集群中包含多个存储几点,每个存储节点包含多块磁盘,每块磁盘对应一个或者多个slicestore的内存逻辑结构来管理. ...

  3. linux服务器安装宝塔以及一些坑

    首先在linux 下运行这一步命令yum install -y wget && wget -O install.sh http://download.bt.cn/install/ins ...

  4. java递归遍历树结构目录

    目录实体 private int id; private int pid; private String name; 递归遍历方法 private void getTree(Menu menu ,Li ...

  5. Scrapy学习1:安装

    Install Scrapy 熟悉PyPI的话,直接一句 pip install Scrapy 但是有时候需要处理安装依赖,不能直接一句命令就安装结束,这个和系统有关. 我用的Ubuntu,这里仅介绍 ...

  6. Python三大器之迭代器

    Python三大器之迭代器 迭代器协议 迭代器协议规定:对象内部必须提供一个__next__方法,对其执行该方法要么返回迭代器中的下一项(可以暂时理解为下一个元素),要么就引起一个Stopiterat ...

  7. 吉比特&雷霆游戏--2020春招实习

    笔试 题量较大,仅记了一些印象比较深刻的题. 题型为选择 + 填空(给C++代码填输出结果) + 编程 编程题不会太难,最难的就一道字符串的全排列(类似剑指offer第38题LeetCode链接)可以 ...

  8. Python实用笔记 (26)面向对象高级编程——定制类

    Python的class允许定义许多定制方法,可以让我们非常方便地生成特定的类.以下是集中常见的定制方法: 怎么才能打印得好看呢?只需要定义好__str__()方法,返回一个好看的字符串就可以了: _ ...

  9. html+css快速入门教程(4)

    练习 1.网易考拉下拉菜单 2.爱奇艺新闻 3.ps滤镜菜单 4.爱奇艺列表 7 布局 7.1 盒子模型 网页设计,首先要做好整体的布局,网页布局就是将不同的元素按照一定的规则放置在浏览器的不同位置, ...

  10. MyEclipse中项目利用不同版本JDK编译注意点

    一.发现问题本地用jdk.1.6编译,可服务器上市jdk1.5,其他服务器甚至是jdk1.4,不少语法和特性不一样.该服务器的jdk版本一般不现实因为是还有许多其他项目只有将本地安装上jdk1.5. ...