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

1.获取网页信息

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

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

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

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

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

4.查看章节列表

  1. import requests #导入requests库
  2. from bs4 import BeautifulSoup #引入BeautifulSoup库
  3. '''
  4. 查看章节列表信息
  5. 引入BeautifulSoup对网页内容进行解析
  6. 获取网页电子书文本信息
  7. '''
  8. if __name__ == '__main__': #主函数入口
  9. target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
  10. req = requests.get(url=target) #发起请求,获取html信息
  11. req.encoding='utf-8' #设置编码
  12. html = req.text #将网页的html信息保存在html变量中
  13. bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
  14. chapters = bs.find('div',id='list') #获取所有<div id = "list">的内容
  15. chapters = chapters.find_all('a') #找到list中的a标签中的内容
  16. for chapter in chapters:
  17. print(chapter) #打印章节列表

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

  1. import requests #导入requests库
  2. from bs4 import BeautifulSoup #引入BeautifulSoup库
  3. '''
  4. 查看章节列表信息
  5. 引入BeautifulSoup对网页内容进行解析
  6. 获取网页电子书文本信息
  7. '''
  8. if __name__ == '__main__': #主函数入口
  9. server = 'https://www.xsbiquge.com'
  10. target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
  11. req = requests.get(url=target) #发起请求,获取html信息
  12. req.encoding='utf-8' #设置编码
  13. html = req.text #将网页的html信息保存在html变量中
  14. bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
  15. chapters = bs.find('div',id='list') #获取所有<div id = "list">的内容
  16. chapters = chapters.find_all('a') #找到list中的a标签中的内容
  17. for chapter in chapters:
  18. url = chapter.get('href') #获取章节链接中的href
  19. print("《"+chapter.string+"》") #打印章节名字
  20. print(server+url) #将电子书网站与获取到的章节连接进行拼接,得到每一个章节的链接

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

  1. import requests #导入requests库
  2. from bs4 import BeautifulSoup #引入BeautifulSoup库
  3. import time
  4. from tqdm import tqdm
  5. '''
  6. 查看章节列表信息
  7. 引入BeautifulSoup对网页内容进行解析
  8. 获取网页电子书文本信息
  9. '''
  10. def get_content(target):
  11. req = requests.get(url=target) # 发起请求,获取html信息
  12. req.encoding = 'utf-8' # 设置编码
  13. html = req.text # 将网页的html信息保存在html变量中
  14. bf = BeautifulSoup(html, 'lxml') # 使用lxml对网页信息进行解析
  15. texts = bf.find('div', id='content') # 获取所有<div id = "content">的内容
  16. content = texts.text.strip().split('\xa0' * 4)
  17. return content
  18. if __name__ == '__main__': #主函数入口
  19. server = 'https://www.xsbiquge.com' #电子书网站地址
  20. book_name = '《元尊》.txt'
  21. target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
  22. req = requests.get(url=target) #发起请求,获取html信息
  23. req.encoding='utf-8' #设置编码
  24. html = req.text #将网页的html信息保存在html变量中
  25. chapter_bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
  26. chapters = chapter_bs.find('div',id='list') #获取所有<div id = "list">的内容
  27. chapters = chapters.find_all('a') #找到list中的a标签中的内容
  28. for chapter in tqdm(chapters):
  29. chapter_name = chapter.string #章节名字
  30. url = server + chapter.get('href') #获取章节链接中的href
  31. content = get_content(url)
  32. with open(book_name,'a',encoding='utf-8') as f:
  33. f.write("《"+chapter_name+"》")
  34. f.write('\n')
  35. f.write('\n'.join(content))
  36. 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. Python绘图之Turtle库详解(1)

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  2. (一)TestNG-常用注解参数

    原文:https://www.cnblogs.com/starstarstar/p/11305733.html 注解@Test标签 package com.course.testng; import ...

  3. controller场景设计

    场景设计模型-手动场景快增长慢增长指定运行次数组模式 快增长模型:就是压力瞬间启动并且达到最大,通常用于秒杀的场景 loadrunner设置:瞬间启动,瞬间停止 慢增长:压力按照设定的规则慢慢的添加, ...

  4. Windows 程序设计(4) MFC-02 基本控件-下

    1. TabCtrl 标签控件 1.1 创建主窗口 1)CMFCTabControlDlg,拖拽标签控件 2)增加变量 CTabCtrl m_tabCtrl 3)设置相关成员变量和处理函数 CFile ...

  5. 002.OpenShift安装与部署

    一 前置条件说明 1.1 安装准备概述 Red Hat OpenShift容器平台是由Red Hat作为RPM包和容器映像两种类型存在.RPM包使用订阅管理器从标准Red Hat存储库(即Yum存储库 ...

  6. ImageLoader在ViewPage中的使用

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  7. Nginx使用upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  8. 简单的Linq查询语句

    下面我来我大家介绍几种简单的查询方式. 1.简单语法 这个LINQ语句的第一个关键字是from,from后面加的是范围变量,范围变量后加in,后加上事先实例化的模型,然后点出数据的来源. List是列 ...

  9. 《UNIX环境高级编程》(APUE) 笔记第十章 - 信号

    10 - 信号 GitHub 地址 1. 信号 信号是 软中断 ,信号提供了一种处理异步事件的方法. 当造成信号的事件发生时,为进程 产生 一个信号(或向进程 发送 一个信号).事件 可以是硬件异常( ...

  10. windows挂载nas存储

    操作系统:windows server 2016 1.安装nfs客户端打开程序面板 2.点击下一步 3.点击下一步 4.下一步 5.这里只选择文件和存储服务器就可以 6.选择nfs客户端,安装 7.m ...