Python爬取书包网文章实战总结
大家好,又见面了,我是你们的朋友全栈君。
python爬取书包网文章总结
今天闲来无事去看小说,但是发现没办法直接下载,所以呢就用python爬虫来下载一波了,哈哈…
爬取的是这篇小说:剑破九天(是不是很霸气,话不多说,开始…)
总体思路步骤分为以下三步: 1.获得文章的每个章节链接地址 2.获得章节内容 3.保存到指定位置
首先,进入到自己想要下载小说的网址,按F12进入开发者工具,然后
单击这个然后在原网页点击章节列表即可发现以下数据:
接下来就是提取这个章节的url了,我是用的xpath,当然也可以用正则和bs4,如下代码
book_list = res.xpath('//div[@class="wp b2 info_chapterlist"]/ul/li')
此时book_list中就可以得到所有章节的url了(第一步完)
第二步就是获得章节具体内容了:
和第一步相似,用xpath即得到章节名和其中一章节内容
章节名称:name = res.xpath('//h1/text()')
章节内容:message_list = res.xpath('//dd[@id="contents"]/text()')
获得了自己需要的章节内容后就要进入第三步的保存了,不过在一开始保存时在100章左右时用以下代码出现了UnicodeEncodeError这个问题
for m in message:
with open("D:\英雄时刻\{name}.txt".format(name="剑破九天"),"a") as f:
f.write(m)
然后发现是默认编码方式问题,其默认为gbk,所以需要改成“utf-8”的格式,代码如下:
for m in message:
with open("D:\英雄时刻\{name}.txt".format(name="剑破九天"),"a",encoding="utf-8") as f:
f.write(m)
然后就可以喝一杯茶慢慢等爬取完成了,哈哈,以下为代码:
#剑破九天.text
import requests
import json
from lxml import html
def get_booklist(n):#获得章节地址
url = "https://www.bookbao99.net/book/201706/05/id_XNTc5MDg2.html"
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
response = requests.get(url,headers = header)
response.encoding = "utf-8"
res = html.fromstring(response.text)
book_list = res.xpath('//div[@class="wp b2 info_chapterlist"]/ul/li')
print(len(book_list))#章节个数
for book in book_list:#遍历所有章节
try:
t = book.xpath('a/@href')
book_url = "https://www.bookbao99.net" + t[0]
get_message(book_url)
print("第{n}章爬取完毕".format(n=n))
n += 1
except UnicodeEncodeError:
print("出现一个错误")
continue
def get_message(url):#提取每个章节内容
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
response = requests.get(url,headers = header)
response.encoding = "utf-8"
res = html.fromstring(response.text)
name = res.xpath('//h1/text()')
n = '\n'+name[0]+'\n\n'
#print(name[0])
message_list = res.xpath('//dd[@id="contents"]/text()')
message_list.insert(0,n)
#print(message_list)
save_book(message_list)
def save_book(message):#保存
for m in message:
with open("D:\英雄时刻\{name}.txt".format(name="剑破九天"),"a",encoding="utf-8") as f:
f.write(m)
if __name__ == "__main__":
n = 1
get_booklist(n)
是不是美滋滋。 最后呢,欢迎一起讨论爬虫哟~~~
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148487.html原文链接:https://javaforall.cn
相关文章
- Python-基础04-数据类型
- python要不要装pycharm-Python和pyCharm安装
- pycharm远程部署_树莓派python环境
- Python实现门禁管理系统
- python删除首行_Python删除文件第一行
- Python入门系列(五)一篇搞懂python语句
- python中dtype什么意思_NumPy Python中的数据类型对象(dtype)
- python监控网页内容变化_使用Python监控文件内容变化代码实例
- python socket recvfrom_Python:socket.recvfrom()不返回任何地址
- 简单WiFi控制小车系统(树莓派+python+web控制界面)
- 【说站】python random中的随机函数
- 【说站】python随机数种子在多维数组的使用
- 【说站】python requests发送不同类型的数据
- 为项目选择的python解释器无效_PyCharm中创建项目时,在所创建的python虚拟环境下的pip失效问题…
- 经纬度距离计算 python_Python已知两坐标求距离
- OpenCV-Python学习(1)—— OpenCV历史与安装
- python读取pkl_Python 读取文件
- python win32api sendmessage_Python win32api.SendMessage方法代码示例[通俗易懂]
- 数据结构与算法Python_数据结构与算法python语言实现
- Python在线编写以及文档查看工具Jupyter
- 人生苦短,我用Python-手把手教你如何使用python写串口调试助手
- Python基础(十七):函数的深入了解
- 软件测试|教你使用Python快速绘制酷炫词云图
- Python 2018-2019 结课作业 总结
- 【Python】多线程与多进程学习笔记
- python-Python与MongoDB数据库-使用Python执行MongoDB查询(三)
- Python开发系列课程(20) – 网络应用开发详解编程语言
- Python学习:6.python内置函数详解编程语言
- Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)详解编程语言
- Python异常处理try except else finally
- 初识 Python:全局、局部和非局部变量(带示例)
- python域名分析工具实现代码
- Python入门篇之面向对象
- Python异常处理总结
- python中的hashlib和base64加密模块使用实例