所需模块
import requests #获取网络连接
目标小说网站:http://m.50zw.la
获取页面
r = requests.get('http://m.50zw.la',params=re_header)
这里的re_header是HTTP请求头,用来模仿浏览器访问,避免被网站发现
获取方法如下
1,用chrome打开小说网站
2,按F12进入开发者模式或者 鼠标右键->检查 进入开发者模式
3,点击network
4,如图:
注:request-header里的并不需要全部复制,只要一部分就可以,具体的自己试一试
然后我们获取到的网页就会保存在r里面
这里还要设置编码,requests默认为utf-8,我们的目标网站的编码是gbk
打印出来的是网站的源代码,我们要获得小说章节内容,只需要获得文字就行了。
所以我们得把网站源码里得代码部分全部剔除掉。
所需模块:
from bs4 import BeautifulSoup
这个模块可以根据网页内的标签来获取指定的内容
如:
通过select方法选取html页面的title标签,获得的返回是一个列表,如图:
再用text属性来获取标签内的文字:
掌握了这些,接下来获取章节内容就非常简单了
我们先随便打开一个章节的页面,然后按F12进入开发者模式,如图:
先点击左上的鼠标图标,让后再点击要选择的内容,与之对应的标签就会在源码里高亮显示出来
这里我们可以看到章节内容在 id为nr1的标签下(select方法也可以根据id和类名来进行选择),如图:
获取到章节内容后,将其保存到一个变量中去方便进行文件写入
所需模块:
import os
os模块是python中用来进行文件读写的,详细的可以自己去了解一下python3|菜鸟教程,这里只要用到open()函数
open('要打开的文件名,没有回自动创建','打开模式,我用的是wb')#wb模式为:以读写方式打开文件,若已存在则覆盖原来的文件
如图:
这里最好加一个括号,否则可能出现意想不到的错误
生成的文件就在当前脚本所在的目录下,这里我打错了格式,其实应该是txt格式的
完整代码如下:
import requestsimport osfrom bs4 import BeautifulSoupurl = '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('下载成功')
联系客服