python爬虫学习01--电子书爬取
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--电子书爬取的更多相关文章
- Python爬虫学习之正则表达式爬取个人博客
实例需求:运用python语言爬取http://www.eastmountyxz.com/个人博客的基本信息,包括网页标题,网页所有图片的url,网页文章的url.标题以及摘要. 实例环境:pytho ...
- Python爬虫学习笔记之爬取新浪微博
import requests from urllib.parse import urlencode from pyquery import PyQuery as pq from pymongo im ...
- python爬虫:了解JS加密爬取网易云音乐
python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...
- Python爬虫:为什么你爬取不到网页数据
前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 转 Python爬虫实战二之爬取百度贴吧帖子
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。
小帅b说过 在这几篇中会着重说说将爬取下来的数据进行存储 上次我们说了一种 csv 的存储方式 这次主要来说说怎么将爬取下来的数据保存到 MySQL 数据库 接下来就是 学习python的正确姿势 真 ...
随机推荐
- xdoj 2020校赛复盘
平时写东西都不喜欢复盘,这肯定不是一个好习惯,感觉每次花好几个小时甚至好几天写题目然后没写出来也不去看题解是一种很蠢的行为( 花了这么久时间打校赛,虽然水平很low,数据结构也不太会用,还是记录一下自 ...
- 超详细Maven技术应用指南
该文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual 搜索关注微信公众号" ...
- CVE-2018-12613 phpmyadmin文件包含getshell连载(三)
这是phpmyadmin系列渗透思路的第三篇文章,前面一篇文章阐述了通过慢查询日志getshell,本文将通过文件包含漏洞展开讨论 #001 影响版本 Phpmyadmin 4.8.0/4.8.0.1 ...
- shellcode 免杀(一)
工具免杀 选择了几个简单或者近期还有更新的免杀工具进行学习 ShellcodeWrapper https://github.com/Arno0x/ShellcodeWrapper 该工具的原理是使用异 ...
- 深入了解C#(TPL)之Parallel.ForEach异步
前言 最近在做项目过程中使用到了如题并行方法,当时还是有点犹豫不决,因为平常使用不多, 于是借助周末时间稍微深入了下,发现我用错了,故此做一详细记录,希望对也不是很了解的童鞋在看到本文此文后不要再犯和 ...
- 09.DRF-ModelSerializer
四.模型类序列化器ModelSerializer 如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serial ...
- Java WebService学习笔记 - Axis进阶(二)
上一篇 Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...
- python高级-闭包-装饰器
闭包内容: 匿名函数:能够完成简单的功能,传递这个函数的引用,只有功能 普通函数:能够完成复杂的功能,传递这个函数的引用,只有功能 闭包:能够完成较为复杂的功能,传递这个闭包中的函数以及数据,因此传递 ...
- Python实用笔记 (3)条件判断
可以执行多条语句,靠的是缩进原则,看起来也更板扎(注意冒号) age = 3 if age >= 18: print('adult') elif age >= 6: print('teen ...
- FastAPI 快速搭建一个REST API 服务
最近正好在看好的接口文档方便的工具, 突然看到这个, 试了一下确实挺方便 快速示例 from fastapi import FastAPI from pydantic import BaseModel ...