目标

爬取一本仙侠类的小说下载并保存为txt文件到本地。本例为“大周仙吏”。

项目准备

软件:Pycharm

第三方库:requests,fake_useragent,lxml

网站地址:https://book.qidian.com

网站分析

打开网址:

网址变为:https://book.qidian.com/info/1020580616#Catalog

判断是否为静态加载网页,Ctrl+U打开源代码,Ctrl+F打开搜索框,输入:第一章。

在这里是可以找到的,判定为静态加载。

反爬分析

同一个ip地址去多次访问会面临被封掉的风险,这里采用fake_useragent,产生随机的User-Agent请求头进行访问。

代码实现

1.导入相对应的第三方库,定义一个class类继承object,定义init方法继承self,主函数main继承self。
import  requests
from fake_useragent import UserAgent
from lxml import etree
class photo_spider(object):def __init__(self):self.url = 'https://book.qidian.com/info/1020580616#Catalog'ua = UserAgent(verify_ssl=False)#随机产生user-agentfor i in range(1, 100):self.headers = {'User-Agent': ua.random}def mian(self):pass
if __name__ == '__main__':spider = qidian()spider.main()
2.发送请求,获取网页。
    def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return html
3.获取图片的链接地址。
import requests
from lxml import etree
from fake_useragent import UserAgent
class qidian(object):def __init__(self):self.url = 'https://book.qidian.com/info/1020580616#Catalog'ua = UserAgent(verify_ssl=False)for i in range(1, 100):self.headers = {'User-Agent': ua.random}def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return htmldef parse_html(self,html):target=etree.HTML(html)links=target.xpath('//ul[@class="cf"]/li/a/@href')#获取链接names=target.xpath('//ul[@class="cf"]/li/a/text()')#获取每一章的名字for link,name in zip(links,names):print(name+'\t'+'https:'+link)def main(self):url=self.urlhtml=self.get_html(url)self.parse_html(html)
if __name__ == '__main__':spider=qidian()spider.main()

打印结果:

4.解析链接,获取每一章内容。
    def parse_html(self,html):target=etree.HTML(html)links=target.xpath('//ul[@class="cf"]/li/a/@href')for link in links:host='https:'+link#解析链接地址res=requests.get(host,headers=self.headers)c=res.content.decode('utf-8')target=etree.HTML(c)names=target.xpath('//span[@class="content-wrap"]/text()')results=target.xpath('//div[@class="read-content j_readContent"]/p/text()')for name in names:print(name)for result in results:print(result)

打印结果:(下面内容过多,只贴出一部分。)

5.保存为txt文件到本地。
 with open('F:/pycharm文件/document/' + name + '.txt', 'a') as f:for result in results:#print(result)f.write(result+'\n')

效果显示:

打开文件目录:

完整代码

import requests
from lxml import etree
from fake_useragent import UserAgent
class qidian(object):def __init__(self):self.url = 'https://book.qidian.com/info/1020580616#Catalog'ua = UserAgent(verify_ssl=False)for i in range(1, 100):self.headers = {'User-Agent': ua.random}def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return htmldef parse_html(self,html):target=etree.HTML(html)links=target.xpath('//ul[@class="cf"]/li/a/@href')for link in links:host='https:'+link#解析链接地址res=requests.get(host,headers=self.headers)c=res.content.decode('utf-8')target=etree.HTML(c)names=target.xpath('//span[@class="content-wrap"]/text()')results=target.xpath('//div[@class="read-content j_readContent"]/p/text()')for name in names:print(name)with open('F:/pycharm文件/document/' + name + '.txt', 'a') as f:for result in results:#print(result)f.write(result+'\n')def main(self):url=self.urlhtml=self.get_html(url)self.parse_html(html)
if __name__ == '__main__':spider=qidian()spider.main()

更多阅读

5 分钟完全掌握 Python 协程

程序运行慢?你怕是写的假 Python

赛博朋克科幻文化的起源和意义

特别推荐

程序员摸鱼指南

为你精选的硅谷极客资讯,

来自FLAG巨头开发者、技术、创投一手消息

点击下方阅读原文加入社区会员

用 Python 爬取起点小说网相关推荐

  1. Python爬虫期末作业 | 爬取起点小说网作者和书名,并以Excel形式存储

    使用Python爬虫技术爬取起点小说网作者及书名,并且以xlsx形式保存 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容. 一. ...

  2. 【Python从零到壹】使用XPath解析数据爬取起点小说网数据

    我们已经可以从网上爬取数据了,现在我们来看看如何对数据解析 文章目录 1. xpath 的介绍 优点: 安装lxml库 XML的树形结构: 选取节点的表达式举例: 2. 爬取起点小说网 在浏览器中获取 ...

  3. 爬虫项目实战二:爬取起点小说网

    爬取起点小说网 目标 项目准备 网站分析 反爬分析 代码实现 效果显示 目标 爬取一本仙侠类的小说下载并保存为txt文件到本地.本例为"大周仙吏". 项目准备 软件:Pycharm ...

  4. Python爬取起点小说并保存到本地文件夹和MongoDB数据库中

    Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...

  5. 使用python爬取斗破苍穹小说网

    使用python爬取斗破苍穹小说网,学会了以后就不用去看付费的小说了不多bb直接上源码 import requests from bs4 import BeautifulSoupdef file(): ...

  6. java小说目录提取_完整Java爬取起点小说网小说目录以及对应链接

    完整Java爬取起点小说网小说目录以及对应链接 完整Java爬取起点小说网小说目录以及对应链接 (第一次使用markdown写,其中的排版很不好,望大家理解) ?? 因为最近有一个比赛的事情,故前期看 ...

  7. Python爬取起点小说并写入文档

    python爬取起点免费小说 按F12查看网页源代码: 发现每一章小说链接在li中,这时可以提取每一章的链接: def get_html(url):r=requests.get(url)html=Be ...

  8. scrapy爬取起点小说网

    闲来无事,在学习过程中练习用scrapy爬取起点小说名 工具:python3.6 操作系统:linux 浏览器:谷歌浏览器 创建项目 在黑屏终端创建一个项目:scrapy startproject Q ...

  9. 爬取起点小说网免费小说

    python 3.7 设置了0.5秒存入一个章节 所以有点慢 运行的时候在py文件的同级目录下创建目标的小说文件夹 在文件夹中写入小说章节 headers完全没有引用= =(主要是起点没有怎么反爬取) ...

  10. 起点小说免费看 Scrapy爬取起点小说网数据导入MongoDB数据

    本文中我们将详细介绍使用Scrapy抓取数据并存入MongoDB数据库,首先给出我们需要抓取得数据: 抓取起点网得全部作品,网址为:https://www.qidian.com/all 关于Scrap ...

最新文章

  1. 【机器学习入门】(10) 特征工程:特征抽取,字典特征抽取、文本特征抽取,附完整python代码
  2. jsp与java_JSP与JavaBeans
  3. 手机控制树莓派linux,怎样用PC或手机远程控制树莓派
  4. 【GitHub教程】如何使用Eclipse将本地项目上传到github
  5. 【Caffe安装】Caffe安装(无GPU)--wanglei
  6. hdu 1907John博弈
  7. 自动控制原理基础学习
  8. 如何解决佳能mp288打印机P08、P07报错
  9. VC2008界面编程
  10. delphi打印机编程
  11. 深入理解 JVM 垃圾回收机制及其实现原理
  12. winform的FormBorderStyle设置为None窗口的最小宽度不能小于132
  13. Java 8 Nashorn 教程
  14. java 压缩文件夹有几率压缩失败,打开显示不可预料的末端且用其他专业软件解压文件没压缩完全
  15. 移动互联网时代,怎样打造一款新闻资讯类产品?
  16. 箱线图(Boxplot)
  17. Android中设置字体居中,【Android】TextView中不同大小字体如何上下垂直居中?
  18. 硬核FutureTask解析
  19. 微信小程序操作教程(个人用户注册)
  20. 2010年10月20日

热门文章

  1. jsoup爬虫实战详解之新浪
  2. 01.Matlab文件类型
  3. linux 解压war到root_unzip命令解压war包方法
  4. linux中unzip命令无法使用解决方法
  5. linux vi 替换字符串,vi字符串替换命令
  6. python2048游戏实训报告_Python 实现 2048 游戏
  7. 群晖 6.1 重置 mysql_群晖 “还原”/系统可恢复”无限循环终极解决
  8. QQ自动登陆脚本生成器 v1.0
  9. 利用VBA操作OutLook批量发送工资条
  10. matlab符号函数作图,matlab符号函数的作图