python网络爬虫-爬取《斗破苍穹》全文小说 源码

前言:想当年我是花了好几百看完小说《斗破苍穹》,那简直就是心疼的胃抽筋,但是还是坚持看完了,我相信现在很多小说迷都是这样吧,但是自从我学了Python爬虫,收费小说都不是问题了,现在后悔没有早入坑啊啊啊

python网络爬虫-爬取《斗破苍穹》全文小说 源码

今天闲来无事,小编整理出了源码,感兴趣的拿走拿走

<code>import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import requests
import re
import time

headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}

f = open('C:/Users/hammer/Desktop/doupo.txt','a+')

def get_info(url):
res = requests.get(url,headers=headers)
if res.status_code == 200:
contents = re.findall('

(.*?)

',res.content.decode('utf-8'),re.S)
for content in contents:
f.write(content+'\\n')
else:
pass

if __name__ == '__main__':
urls = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(2,1665)]
for url in urls:
get_info(url)
time.sleep(1)
f.close()
/<code>

然后还有保存到本地TXT:

python网络爬虫-爬取《斗破苍穹》全文小说 源码


<code>#导入requests库
import requests
#导入 re 库
#导入时间模块
import time
import re
#定义请求头,请求头可以使爬虫伪装成浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
#定义连接网络的列表
url_list = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(2,1665) ]

#函数主体
with open('F:/exercise/斗破苍穹.txt', 'w') as f:
for url in url_list:
html = requests.get(url, headers = headers)
#如果status_code = 200, 说明网页相应成功
if html.status_code == 200:
#利用正则表达式获取内容
contents = re.findall('

(.*?)

', html.content.decode('utf-8'), re.S)
#将内容写入到本地txt文档

f.write('\\n\\n')
for content in contents:
f.write(content+'\\n')
else:
pass
time.sleep(0.5)/<code>

首先我们要做的,依旧是观察目标网页的URL

斗破苍穹第一页http://www.doupoxs.com/doupocangqiong/2.html

斗破苍穹第二页为http://www.doupoxs.com/doupocangqiong/5.html

斗破苍穹第三页为http://www.doupoxs.com/doupocangqiong/6.html

斗破苍穹第四页为http://www.doupoxs.com/doupocangqiong/7.html

经过分析,第一页与第二页没有明显的规律,但是第二页往后规律就很明显了。我们依然可以构造网页http://www.doupoxs.com/doupocangqiong/{0}.html样式的url列表,但是 {} 里面为3,4的时候网页出现404,这该怎么办?这就需要我们来判断返回的status_cord了,如果返回200,则说明连接成功,否则相应失败。

现在来分析代码:

1.导入requests库、time模块、re 模块、定义请求头

2.构造ur连接列表http://www.doupoxs.com/doupocangqiong/ { }.html 区间为[2,1665) 左闭右开,其中3,4网页为404

3.在本地创建一个TXT文件,命名为 ”斗破苍穹.txt“ 。利用with 语句来进行文件的 写 操作。

3.1利用 with 语句 打开 open 路径为 “F:/exercise/斗破苍穹.txt”的文件,“w”为写操作。

3.2利用 for 循环读入 URL ,利用requests读取网页内容

3.3.判断是否成功连接网页,如果成功连接网页则:

3.3.1利用正则表达式获取文章内容。注意,我们获得的是非utf-8编码,因此在这里我们多了一个步骤,就是将获取到的内容转换为utf-8编码。你可以将 html.content.decode('utf-8) 更换为 html.text 打印一小部分内容观察一下。

3.3.2在文本写入两行空格,用来区分章节。

3.3.3循环读入获取到的内容,将其写入文本中

3.4如果连接失败,那么就pass掉此次循环,进入下一个循环。

3.5让程序休息0.5秒,防止一直在运行,频率过高从而导致爬虫失败。

文件操作:

打开文件进行操作之后需要将打开的文件关闭。否则会一直占用资源。但有时程序出现问题,导致打开的文件不能正常关闭,所以我们会用 try... finally来进行文件的操作。但是这样未免显得繁琐。所以 Python引入了 with 语句来自动关闭 close 文件。用法是 with open(“path”,‘identifier’)as f 其中path指的是文件的路径,包括文件名;‘identifier’ 是标识符,表示的是对文件进行何种操作: ‘r' 表示读文件: ’w' 表示写文件: ‘rb’ 表示读取二进制文件(比如图片,视频等)。

下图为成功读取保存的《斗破苍穹》文本文档:

python网络爬虫-爬取《斗破苍穹》全文小说 源码

最后小编帮助大家整理了一套python教程,下面展示了部分,希望也能帮助对编程感兴趣,想做数据分析,人工智能、爬虫或者希望从事编程开发的小伙伴,毕竟python工资也还可以,如果能帮到你请点赞、点赞、点赞哦~~


python网络爬虫-爬取《斗破苍穹》全文小说 源码


python网络爬虫-爬取《斗破苍穹》全文小说 源码

python网络爬虫-爬取《斗破苍穹》全文小说 源码


分享到:


相關文章: