python学习(二)爬虫——爬取网站小说并保存为txt文件(一)

一:获取小说页面

所需模块

import requests #获取网络连接

目标小说网站:http://m.50zw.la

获取页面

r = requests.get('http://m.50zw.la',params=re_header)

requests的高级特性

这里的re_header是HTTP请求头,用来模仿浏览器访问,避免被网站发现
获取方法如下
1,用chrome打开小说网站
2,按F12进入开发者模式或者 鼠标右键->检查 进入开发者模式
3,点击network
4,如图:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第1张图片


注:request-header里的并不需要全部复制,只要一部分就可以,具体的自己试一试

然后我们获取到的网页就会保存在r里面
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第2张图片


这里还要设置编码,requests默认为utf-8,我们的目标网站的编码是gbk
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第3张图片


打印出来的是网站的源代码,我们要获得小说章节内容,只需要获得文字就行了。
所以我们得把网站源码里得代码部分全部剔除掉。

二:剔除源码中的代码部分

所需模块:

from bs4 import BeautifulSoup

极客学院|BeautifulSoup的用法

这个模块可以根据网页内的标签来获取指定的内容
如:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第4张图片


通过select方法选取html页面的title标签,获得的返回是一个列表,如图:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第5张图片


再用text属性来获取标签内的文字:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第6张图片


掌握了这些,接下来获取章节内容就非常简单了

三:获取章节内容

我们先随便打开一个章节的页面,然后按F12进入开发者模式,如图:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第7张图片


先点击左上的鼠标图标,让后再点击要选择的内容,与之对应的标签就会在源码里高亮显示出来

这里我们可以看到章节内容在 id为nr1的标签下(select方法也可以根据id和类名来进行选择),如图:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第8张图片


获取到章节内容后,将其保存到一个变量中去方便进行文件写入
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第9张图片


四:写入文件

所需模块:

import os

os模块是python中用来进行文件读写的,详细的可以自己去了解一下python3|菜鸟教程,这里只要用到open()函数

open('要打开的文件名,没有回自动创建','打开模式,我用的是wb')
#wb模式为:以读写方式打开文件,若已存在则覆盖原来的文件

如图:
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第10张图片


这里最好加一个括号,否则可能出现意想不到的错误
python学习(二)爬虫——爬取网站小说并保存为txt文件(一)_第11张图片


生成的文件就在当前脚本所在的目录下,这里我打错了格式,其实应该是txt格式的

完整代码如下:

import requests
import os
from bs4 import BeautifulSoup

url = 'http://m.50zw.la/book_1/5.html'
re_header = {
'Referer':'http://m.50zw.la/chapters_1/',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Mobile Safari/537.36'
}

#获取网页
r = requests.get(url,params=re_header)

#更改编码
r.encoding = 'gbk'

#获得BeautifulSoup对象
soup = BeautifulSoup(r.text,"html.parser")

#获得章节内容
chapter_content = soup.select('#nr1')[0].text

#打开/创建文件
fo = open('1.txt','wb')

fo.write((chapter_content).encode('utf-8'))

print(chapter_content)

#使用完后关闭文件
fo.close()

print('下载成功')

参考:Python爬虫系列:爬取小说并写入txt文件

下一篇:整本小说的爬取 | | python学习(二)爬虫——爬取网站小说并保存为txt文件(二)

你可能感兴趣的:(python,学习笔记,python爬虫入门)