目录
图片展示:
第一张图片:表示要爬取的每个目录的链接地址和标题
第二张图片:表示爬取目录下的内容
代码:
from selenium import webdriver
from lxml import etree
# 使用webdriver.Edge()创建一个Edge浏览器的WebDriver对象,命名为driver,用于控制和操作浏览器。
driver = webdriver.Edge()
# 将要访问的小说目录页面的网址保存在url变量中。
url = "爬取的网站" # 要换成你要爬取的网站
# 使用WebDriver对象的get()方法,通过传入url参数来访问指定的网址。
driver.get(url)
# 使用WebDriver对象的page_source属性,获取当前页面的源代码,保存在page变量中。
page = driver.page_source
# 使用etree库中的HTML()方法,将获取到的页面源代码解析为一个可操作的XML树结构,保存在tree变量中。
tree = etree.HTML(page)
# 使用XPath语法,从XML树结构(tree)中找到所有章节所在的dd元素节点,将结果保存在index变量中。
index = tree.xpath('/html/body/div[1]/div[5]/div/dl/dd')
# 创建一个空列表lst,用于保存每个章节的链接。
lst = []
# 使用for循环遍历每个章节的索引值。
for i in range(1, len(index) + 1):
# 使用当前索引值i构建XPath表达式,找到对应章节的链接所在的a元素节点,并通过.get('href')方法获取链接内容,保存在a变量中。
a = tree.xpath(f'/html/body/div[1]/div[5]/div/dl/dd[{i}]/a[@href]')[0].get('href')
# 将获取到的链接添加前缀’http:',保存在url2变量中。
url2 = 'http:' + a
# 将每个章节的链接添加到lst列表中。
lst.append(url2)
# 使用for循环遍历lst列表中的每个章节链接。
for i in lst:
# 使用WebDriver对象的get()方法,通过传入章节链接i来访问对应的章节页面。
driver.get(i)
# 获取当前章节页面的源代码,保存在page变量中。
page = driver.page_source
# 将获取到的当前章节页面源代码解析为一个新的XML树结构,保存在tree变量中。
tree = etree.HTML(page)
# 使用XPath语法,从新的XML树结构(tree)中找到章节标题所在的元素节点,提取标题内容,保存在title变量中。
title = tree.xpath('/html/body/div[1]/div[4]/div/div[2]/h1/text()')[0]
# 使用XPath语法,从新的XML树结构(tree)中找到章节正文所在的元素节点,提取正文内容,保存在content变量中。
content = tree.xpath("/html/body/div[1]/div[4]/div/div[4]/text()")
# 打印标题和内容
print(title)
print(content)