博主这一星期基本都在玩python爬虫,从豆瓣的图书排行到豆瓣的电影排行到链家的房屋信息到去哪儿网的旅游信息爬了个遍:,先贴一段爬取豆瓣图书前200排行的代码给小伙伴们:

#-*- coding:utf-8 -*-
import requests
from lxml import etree
import timewith open(r'D:/douban.txt','w',encoding='utf-8') as F:for i in range(10):url = 'https://book.douban.com/top250?start={}'.format(i*25)data = requests.get(url).textf = etree.HTML(data)books = f.xpath('//*[@id="content"]/div/div[1]/div/table')for div in books:title = div.xpath('./tr/td[2]/div[1]/a/@title')[0]score = div.xpath('./tr/td[2]/div[2]/span[2]/text()')[0]comment = div.xpath('./tr/td[2]/p[2]/span/text()')num = div.xpath('./tr/td[2]/div[2]/span[3]/text()')[0].strip('(').strip().strip(')')href = div.xpath('./tr/td[2]/div[1]/a/@href')[0]time.sleep(1) #加个睡眠,防止IP被封if len(comment)>0:print('{}-->{}-->{}-->{}-->{}'.format(title,score,comment[0],num,href))F.write("{}-->{}-->{}-->{}-->{}\n".format(title,score,comment,num,href))else:print('{}-->{}-->{}-->{}'.format(title,score,num,href))F.write("{}-->{}-->{}-->{}\n".format(title,score,num,href))F.flush()#保证数据及时从缓存写入本地print('\n')


但是这些爬虫感觉与自己去搜索查询区别不大,知识更省时而已。但是博主想到每次去网站看小说,旁边各种广告弹窗就很烦,而且翻页还会有各种广告网页跳出,很影响心情,那么我们能不能把小说直接通过爬虫以文本形式保存呢,然后存在手机或者电脑上慢慢看,说干就干,开始我们的小说爬取之路。
首先准备工作就是python的安装和python库的使用,爬取小说我们需要用到的库有:urllib,request,re,bs4(bs4=Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。)。这些库可以在虚拟机环境下安装也可以在windows环境下安装,我是在windows环境下通过cmd直接输入pip install beautifulsoup4/request完成安装,不过百度上说大部分人都会遇到各种问题,只有人品好的人才会直接成功(不好意思我就是人品好的那种,每个都是一次成功。)
我用的开发环境是IDEA,当然你也可以选择使用eclipse,在爬虫方面两者没有什么区别,不过博主更推荐IDEA,毕竟maven项目实在是太好用了。
废话不再多说,下面进入正题:爬取小说。
首先,我们引入我们需要的库文件:
#coding:utf-8 import re import sys from bs4 import BeautifulSoup import urllib.request import time

注意点:python想要使用汉字,需要在脚本最前面添加 #coding:utf-8,汉字使用的编码为utf-8,否则会出现错误!**
首先可以进行一下爬虫伪装(有的网站对于反爬虫力度比较大,如果过快的爬取或者固定IP爬取会被封IP,一般租房网站和购票网站的反爬虫力度比较大,但是此次爬取的“乐文小说”对反爬虫基本没有措施):

headers = ('User-Agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1')opener = urllib.request.build_opener()
opener.addheaders = {headers}
urllib.request.install_opener(opener)

首先先从爬取第一个章节开始,此次我选择的是“权杖”这个小说(我也没看过~):权杖 第一章

url = "http://www.lewendu8.com/books/0/114/24413.html"
file = urllib.request.urlopen(url)
data = BeautifulSoup(file , from_encoding="utf8")   先通过代码获取本章节名称:

section_name = data.title.string
print(section_name)

爬取结果:

接下来爬取第一章的小说正文,直接贴代码实在太敷衍了,首先我们进入这张小说的页面,通过开发者模式一步步操作(推荐谷歌浏览器,很方便):首先找到正文所在(都在存放在p标签中,具体原因请先了解html):

认真寻找具体划分:
然后将语句写入section_text中:

  section_text = data.select('#bgdiv .border_l_r #content p')[0].text

替换章节内容:

section_text=re.sub( '\s+', '\r\n\t', section_text).strip('\r\n')

至此单章爬取完毕,接下来肯定要把整本小说爬取下来了,首先要通过比较每一章节的url来寻找规律:
http://www.lewendu8.com/books/0/114/24413.html 第一章
http://www.lewendu8.com/books/0/114/24415.html 第二章
http://www.lewendu8.com/books/0/114/24418.html 第三章
从上面的url可以看出区别就在于最后的数字不同:
所以可以得出结论,该小说url的构成是:http://www.lewendu8.com/books/21/21335/章节序号.html
然后继续去观察源码:
发现next_page = "6381843.html"便是下一章的章节序号。那么我们只需要使用正则匹配就可以获取到下一章的章节序号了,然后将其写入代码就可以把所有章节给爬取下来了(用一个判断语句即可)。到此一个小说便全部爬取完毕了。

贴上全部代码:

__author__ = 'wanghang'
#coding:utf-8
#author:Ericam_
import re
import sys
from bs4 import BeautifulSoup
import urllib.request
import time
headers = ('User-Agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1')
opener = urllib.request.build_opener()
opener.addheaders = {headers}
urllib.request.install_opener(opener)def get_download(url):file = urllib.request.urlopen(url)data = BeautifulSoup(file , from_encoding="utf8")section_name = data.title.stringsection_text = data.select('#bgdiv .border_l_r #content p')[0].textsection_text=re.sub( '\s+', '\r\n\t', section_text).strip('\r\n')fp = open('quanzhang.txt','a')fp.write(section_name+"\n")fp.write(section_text+"\n")fp.close()pt_nexturl = 'var next_page = "(.*?)"'nexturl_num = re.compile(pt_nexturl).findall(str(data))nexturl_num = nexturl_num[0]return nexturl_numif __name__ == '__main__':url = "http://www.lewendu8.com/books/0/114/24413.html"num = 228index = 1get_download(url)while(True):nexturl = get_download(url)index += 1sys.stdout.write("已下载:%.3f%%" % float(index/num*100) + '\n')sys.stdout.flush()url = "http://www.lewendu8.com/books/0/114/3000868/"+nexturlif(nexturl == 'http://www.lewendu8.com/books/0/114/3000868/'):breakprint(time.clock())

爬取结果:

从小说网站爬取小说并写入txt文档中相关推荐

  1. C语言,产生一组数字,并将其写入txt文档中

    #include<stdio.h> /*产生一组连续的数字,并将其写到txt文档中*/ /*说明:本程序在在win10 系统64位下用Dev-C++ 5.11版本编译器编译的*/ int ...

  2. Python爬虫将爬取的图片写入world文档

    作为初学爬虫的我,无论是爬取文字还是图片,都可以游刃有余的做到,但是爬虫所爬取的内容往往不是单独的图片或者文字,于是我就想是否可以将图文保存至world文档里,一开始使用了如下方法保存图片: with ...

  3. c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...

    数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...

  4. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...

    前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...

  5. python爬虫下载小说_python 爬取小说并下载的示例

    代码 import requests import time from tqdm import tqdm from bs4 import BeautifulSoup """ ...

  6. 第5期-通过飞卢小说网爬取小说

    飞卢小说,说实话还是第一次听说,可能是因为我孤陋寡闻的缘故,别在意.我才不会告诉你,因为我平时只看笔趣阁呢. 首先随便选择一本热门小说吧 https://b.faloo.com/476534.html ...

  7. 处理cookie登录小说网爬取小说

    import requests session = requests.session()#第一种方法data = {"loginName": "13220677880&q ...

  8. 《团队-爬取豆瓣电影TOP250-设计文档》

    团队成员: 张晓亮,邵文强,宁培强,潘新宇,邵翰庆,李国峰,张立新 概要设计思路(https://github.com/Wooden-Robot/scrapy-tutorial): 声明item:It ...

  9. 记录一次爬取知识星球的word文档

    加入了知识星球,星主之前发了很多的word文档,如下图 一个一个的下载太麻烦,弄个python统一爬下来. F12看下路径和请求头,如下 用postman请求下接口,一切正常,能返回所有json信息. ...

  10. python将元祖写入txt文档_python元祖和文件用法举例

    1.元组的几种创建方法 T = () #创建一个空的元组 T = (1,) #创建一个空的字符串 T = (0,'Ni',1.2,3) #创建一个含有四个元素的元组 T = 0,'Ni',1.2,3 ...

最新文章

  1. C# ref和out关键字
  2. Java 读写Properties配置文件
  3. Hadoop sqoop数据导入导出工具安装
  4. 卡耐基梅隆大学CMU Brandon Amos博士论文《可微优化机器学习建模》
  5. UI设计实用临摹素材|APP设计的信息可视化!
  6. 3G手机Android应用开发视频教程_黎活明老师的视频(第五天课程)总共有八天课程...
  7. Go官方库RPC开发指南
  8. kindeditor php配置,KindEditor-编辑器配置参数属性 | 小灰灰博客
  9. 修改FCKEditor实现将图片、文件等保存到数据库
  10. GBase数据库系统操作
  11. BigDecimal加减乘除计算
  12. python正版软件多少钱_正版数据库软件需要多少钱
  13. 30张被厂商阉割掉的Andorid7.0原生2K壁纸,我们为你优选最优质的10张
  14. 淘宝模块中宝贝跳转链接
  15. 1.1Ad Hoc 网络概述
  16. 蓝桥 区别质因数,因数
  17. 基于openCV的形状模版匹配
  18. 类select下拉:多选+搜索
  19. 前端面试合集,20k+已经是妥妥的了
  20. MySQL中order by 结果不准确的问题及解决

热门文章

  1. 恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--GPIO模块(一)
  2. [Ubuntu] 二、安卓模拟器
  3. 图解TCP/IP 读后感
  4. 计算机不识别固态硬盘,电脑经常不识别固态硬盘
  5. 大学生社会实践报告 模板
  6. 互联网日报 | 1月30日 星期六 | 苹果单季营收首破1000亿美元;特斯拉连续六个季度盈利;全球新冠肺炎确诊病例超1亿例...
  7. EDU教育网邮箱申请注册享受Apple、微软、Github等产品教育优惠附带各优惠申请教程
  8. postman测试上传图片接口步骤教程
  9. python判断ip是否可以ping通
  10. Android开发者如何删除手机自带应用