前面练习了爬取单页的小说内容,之后又练习了提取整部小说的内容:
可参考:
一部小说爬取
继上次之后想试试批量爬取小说,想就接着干,找到目标网页的地址:
页面显示如下:
然后打开开发者工具,发现内容也都在相应体中,那提取数据就十分简单了,
页面的跳转的地址也很容易提取:
一段简单的代码实现跳转页面地址的提取,提取出来的地址少了协议,列表推导式完成地址的拼接:
跳转之后竟然没有直接到详情页,跳转到了点击阅读的页面:
没办法,只好再次提取中间跳转的地址:
同样也是很容易提取,地址也是不完整,列表推导式完成拼接:
请求之后终于到了列表详情页:
检查之后提取内容也是很简单,xpath直接提取,同时提取小说的名字,然后在请求小说内容页面的地址:
文本页面的内容同样使用xpath提取,并提取章节,但有两部小说的链接为空,所以就使用if判段直接跳过,否则接下来请求就会出错,同时在这一步直接实现保存,代码如下:
至此代码完成,完整代码如下:
'''
爬取17k小说网女生频道完本50-100万字的小说
'''
# 导入第三方库
import os
import requests
from lxml import etree
from fake_useragent import UserAgent
# 随机请求头
ua = UserAgent()
# 定义一个女生小说频道的类
class Nover_Women():
# 初始化对象
def __init__(self):
self.start_url = "https://www.17k.com/all/book/3_5_0_3_3_0_1_0_1.html"
self.headers = {
'User-Agent': ua.random}
# 提取start_url的html