所需模块
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,如图:
注:request-header里的并不需要全部复制,只要一部分就可以,具体的自己试一试
这里还要设置编码,requests默认为utf-8,我们的目标网站的编码是gbk
打印出来的是网站的源代码,我们要获得小说章节内容,只需要获得文字就行了。
所以我们得把网站源码里得代码部分全部剔除掉。
所需模块:
from bs4 import BeautifulSoup
极客学院|BeautifulSoup的用法
通过select方法选取html页面的title标签,获得的返回是一个列表,如图:
掌握了这些,接下来获取章节内容就非常简单了
我们先随便打开一个章节的页面,然后按F12进入开发者模式,如图:
先点击左上的鼠标图标,让后再点击要选择的内容,与之对应的标签就会在源码里高亮显示出来
这里我们可以看到章节内容在 id为nr1的标签下(select方法也可以根据id和类名来进行选择),如图:
所需模块:
import os
os模块是python中用来进行文件读写的,详细的可以自己去了解一下python3|菜鸟教程,这里只要用到open()函数
open('要打开的文件名,没有回自动创建','打开模式,我用的是wb')
#wb模式为:以读写方式打开文件,若已存在则覆盖原来的文件
生成的文件就在当前脚本所在的目录下,这里我打错了格式,其实应该是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文件(二)